Minor GC&Full GC&Major GC区别及触发条件
程序员文章站
2022-04-08 19:21:29
Minor GC:从年轻代回收内存 触发条件 1、Eden区域满 2、新创建的对象大小 Eden所剩空间 Full GC:清理整个堆空间,包括年轻代和老年代 触发条件 1、每次晋升到老年代的对象平均大小 老年代剩余空间 2、MinorGC后存活的对象超过了老年代剩余空间 3、永久代空 ......
minor gc:从年轻代回收内存
触发条件
1、eden区域满
2、新创建的对象大小 > eden所剩空间
full gc:清理整个堆空间,包括年轻代和老年代
触发条件
1、每次晋升到老年代的对象平均大小>老年代剩余空间
2、minorgc后存活的对象超过了老年代剩余空间
3、永久代空间不足
避免perm gen占满造成full gc现象,可采用的方法为增大perm gen空间或转为使用cms gc
4、system.gc()
通过-xx:+ disableexplicitgc来禁止rmi调用system.gc
5、cms gc异常
promotion failed:minorgc时,survivor空间放不下,对象只能放入老年代,而老年代也放不下造成
concurrent mode failure:gc时,同时有对象要放入老年代,而老年代空间不足造成
6、堆内存分配很大的对象
major gc:清理老年代