首页  

JVM GC 过程简介     所属分类 jvm 浏览量 956
MinorGC    FullGC   
Eden survivor from to
young old


MinorGC过程
新创建的对象先在Eden区分配
Eden满,触发 MinorGC , Eden区和 S1区的存活对象 转移到 S2 区 
复制清理算法

对象进入老年代的4种情况
MinorGC ,存活的对象在S区中存不下,把存活对象存入老年代
大对象直接进入老年代
长期存活的对象将进入老年代 -XX:MaxTenuringThreshold
动态对象年龄判定 在From空间中,相同年龄所有对象的大小总和大于From和To空间总和的一半,那么年龄大于等于该年龄的对象就会被移动到老年代,不用等到15岁(默认)


FullGC
如果老年代中没有足够空间容纳存活对象,触发FullGC ,对整个Heap进行一次GC
FullGC后 还是没有足够空间 OutOfMemoryError

空间分配担保
MinorGC 前 ,先检查老年代最大可用的连续空间是否大于新生代所有对象总空间 
如果有足够空间,那么MinorGC 是安全的
如果没有足够空间 检查参数 HandlerPromotionFailure 
true  尝试 MinorGC
false MinorGC直接升级为 FullGC

老年代最大可用的连续空间大于历次晋升到老年代对象的平均大小,
在HandlerPromotionFailure为true的情况下,可以尝试进行一次Minor GC,但这是有风险的,
如果本次将要晋升到老年代的对象很多,那么MinorGC还是无法执行,改为FullGC

上一篇     下一篇
zookeeper为何不适合做服务发现

zookeeper在kafka中的应用

zookeeper如何保证数据一致性

micrometer使用

zookeeper 与 dubbo

LongAdder和LongAccumulator