JAVA 复习(二)

内存区域

PC指针

方法区

堆 分为新生代,老年代,

方法区、永久代、Meta空间的说明:

https://www.cnblogs.com/chengpeng15/p/9850690.html

内存回收及内存分配

新生代 采用复制算法进行垃圾回收  Minor GC  速度快

扫描二维码关注公众号,回复: 11785878 查看本文章

老年代 采用标记整理(清理)进行垃圾回收 Major/Full GC  速度可能是 Minor GC 的10倍

对象内存分配

对象优先考虑在Eden 区域分配内存,Eden空间不足时促发一次Minor GC,为新对象腾出空间,GC过程中对象可能被移到Survivor区,如果Survivor无法容纳,则移到老年代。

-XX:PretenureSizeThreshold 参数,大于这个设置值的对象直接在老年代分配。

-XX:MaxTenuringThreshold参数,晋升老年代年龄阈值,每一次Minor GC,Survivor中的对象年龄加1.超过阈值后移到老年代。

除了超年龄晋升,JVM也有其它策略来让对象晋升到老年代:某年龄的对象的总大小大于Survivor/2 的大小时,大于等于这个年龄的对象全部晋升。

FULL GC触发的一个时机:

Minnor GC 前,JVM 检测老年代是否有空间容纳新生代的所有对象,如果没有,那么就可能触发一次FULL GC,在老年代腾出空间来容纳Minor GC 可能代来的 晋升行为。是否FULL GC有若干的判断条件。

猜你喜欢

转载自blog.csdn.net/wuzhong8809/article/details/105311151