JVM内存管理

摘要:

image.png

JVM 从跨平台到了跨语言,只要能编译成字节码就可以

JVM整体

image.png

运行时数据区

image.png

为什么有程序计数器?
答:因为操作系统层cpu有时间片轮转。程序计数器是JVM 区域内唯一不会发生OOM的区

java方法运行的内存区域
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使用:

1.
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:加载一个新类,会清空前一个类的内容么?

A:
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容