摘要:
image.png
JVM 从跨平台到了跨语言,只要能编译成字节码就可以
JVM整体
image.png
运行时数据区
image.png
为什么有程序计数器?
答:因为操作系统层cpu有时间片轮转。程序计数器是JVM 区域内唯一不会发生OOM的区
java方法运行的内存区域
image.png
image.png
image.png
image.png
Java 解释执行是栈(操作数栈)--兼容性好,效率偏低
C是寄存器(硬件)运算快。移植性差(make install)
局部变量:存放基本数据类型,引用
操作数栈:存放方法执行,操作
image.png
线程共享区域
image.png
问:既然是线程共享的,为什么不用一份能,而是拆分方法区和堆区呢?
答:动静分离的思想,方法区的东西都比较难回收。
问:永久代和元空间 区别
image.png
堆外内存-直接内存
image.png
从底层深入理解运行时数据区
image.png
image.png
image.png
image.png
工具HSDB使用:
image.png
2.jps 命令查看进程号
总结:
image.png
内存溢出种类:
image.png
解决方案:检查设置的参数和代码
虚拟机优化技术:
1.编译优化技术:方法内联
image.png
2.栈的优化技术
栈之间的数据共享:
image.png
image.png
image.png
Q&A:
Q:成员变量在哪里?
A:在堆中
Q:一个操作数什么时候占据2个槽位
A:一个槽位时32位,也就是当double时就会占2个
Q:加载一个新类,会清空前一个类的内容么?
image.png