堆的作用:用来存放对象
堆内存的大小
1年轻代=Eden区+存活区(From区+To区)
2老年代
大小划分(默认):
堆划分: 老年代:2/3, 年轻代:1/3
年轻代划分:Eden:8/10, From:1/10, To:1/10
堆内存可以通过参数进行设置
-Xms #堆初始内存大小
-Xmx #堆最大内存大小
-Xmm #年轻代内存大小
堆的动态分配(minorGC+fullGC)
- 对象创建后,会放在Eden区
- 对象使用完后,该对象就是垃圾对象
- 若Eden 区放满,就会触发minorGC,将Eden区的对象放到from区或To区
- minorGC 15次后,就会将还存活的对象放到老年代
- 若是老年代已满,就会触发FullGC,对堆,元空间,进行全部扫描,进行垃圾回收
动态演示:
- cmd打开终端
- 输入 jviualvm 可以查看
安装visualGC 插件
点击工具-可以用插件,选择visualaGC插件点击安装即可
找到pid进程,点击visualGC即可查看