码迷,mamicode.com
首页 > 其他好文 > 详细

Young GC和Full GC分别在什么情况下会发生?

时间:2020-04-04 11:21:05      阅读:746      评论:0      收藏:0      [点我收藏+]

标签:直接   区域   时机   连续   检查   参数   情况   执行   full gc   

Young GC的触发时机:Young GC其实一般就是在新生代的Eden区域满了之后就会触发,采用复制算法来回收新生代的垃圾。

Full GC的触发时机如下:

(1)发生Young GC之前进行检查,如果“老年代可用的连续内存空间” < “新生代历次Young GC后升入老年代的对象总和的平均大小”,说明本次Young GC后可能升入老年代的对象大小,可能超过了老年代当前可用内存空间
此时必须先触发一次Old GC给老年代腾出更多的空间,然后再执行Young GC。

(2)执行Young GC之后有一批对象需要放入老年代,此时老年代就是没有足够的内存空间存放这些对象了,此时必须立即触发一次Old GC。

(3)老年代内存使用率超过了92%,也要直接触发Old GC,当然这个比例是可以通过参数调整的。

概括成一句话,就是老年代空间也不够了,没法放入更多对象了,这个时候务必执行Old GC对老年代进行垃圾回收。

Young GC和Full GC分别在什么情况下会发生?

标签:直接   区域   时机   连续   检查   参数   情况   执行   full gc   

原文地址:https://www.cnblogs.com/tiancai/p/12630623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!