minor gc和full gc

来源:互联网 发布:访问远程oracle数据库 编辑:程序博客网 时间:2024/06/05 04:31

(1)新生代(Eden + From Survior + To Survior)(比例为8:1:1,可以通过参数 –XX:SurvivorRatio 来设定)

JVM 每次只会使用 Eden 和其中的一块 Survivor 区域来为对象服务,总是有一块 Survivor 区域是空闲着的

分配不够由老年代进行担保。

老年代:数组和大的对象,新生代中发生minor gc超过一定次数(默认15,可以通过-XX:MaxTenuringThreshold设置)移动进来的对象

(2)堆中:新生代+老年代(比例约为:1:2,该值可以通过参数 –XX:NewRatio 来指定)

方法区:永久代

minor gc:发生在新生代(复制算法)中,当Eden区满的时候发生,Survior满的时候不会引发gc

full gc:指发生在老年代中的GC(标记清除算法)

(1)当老年代满时会引发Full GCFull GC将会同时回收年轻代、老年代

(2)当永久代满时也会引发Full GC,会导致ClassMethod元信息的卸载


Minor GC ,Full GC 触发条件

Minor GC触发条件:当Eden区满时,触发Minor GC。

Full GC触发条件:

(1)调用System.gc时,系统建议执行Full GC,但是不必然执行

(2)老年代空间不足

(3)方法去空间不足

(4)通过Minor GC后进入老年代的平均大小大于老年代的可用内存

(5)由Eden区、From Space区向To Space区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小



频繁出现full gc的问题及解决办法请看这篇博客:Full GC



原创粉丝点击