欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Minor GC&Full GC&Major GC区别及触发条件

程序员文章站 2024-01-11 19:47:34
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:清理老年代