面试专用简洁易懂好记最全笔记Minor GC与Full GC分别在什么时候发生?

简洁易懂好记最全Minor GC与Full GC分别在什么时候发生?

Minor GC:新生代GC,发生在新生代的垃圾回收动作,因为新生代创建对象频繁,所以Minor GC频繁且快。
Full GC:老年代GC,发生在老年代的垃圾回收动作,一般来说消耗时间要比Minor GC慢得多,而且往往伴随着Minor GC的发生。

1.Minor GC什么时候发生?

总的来说,当新生代空间不足时会触发Minor GC,具体有以下两种情况:

  1. 当Eden区满了的时候,或者要创建的对象大小>Eden区剩余空间大小,会触发Minor GC,而且分配率越高,越频繁进行Minor GC。
  2. Full GC有可能会触发Minor GC。

2.Full GC什么时候发生?

当老年代空间不足时会触发Full GC,具体有以下几种情况:

  1. Minor GC后存活对象晋升老年代,由于悲观策略,有两种情况会触发Full GC:
    (1):之前每次晋升对象的平均大小>老年代剩余空间大小
    (2):Minor GC后存活对象大小>老年代剩余空间大小
    这两种情况都是因为老年代为新生代做内存分配担保,对新生代对象晋升担保,但是每次晋升后对象的大小是无法预测的,只能基于统计,(1)是基于历史平均水平,(2)是基于下次晋升对象的最大水平。这两种情况都属于promotion failure.
  2. 新生代直接晋升老年代的大对象大小>老年代剩余空间大小。
  3. 持久代空间不足
  4. System.gc()会触发Full GC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值