5.GC是什么时候触发的

  由于对象进行了分代处理,因此垃圾回收区域、时间也不一样。GC有两种类型:Scavenge GC和Full GC。

5.1Scavenge GC

  一般情况下,当新对象生产,并且在Eden申请空间失败时,就会触发Scavenge GC,堆Eden区域进行GC,清除非存活对象,并且把尚且存活的对象移动到Survivor区。然后整理survivor的两个区。这种方式的GC是对年轻代的eden区进行,不会影响到老年代。因为大部分对象都是从eden开始的,同时eden区不会分配的很大,所以eden区的GC会很频繁。因此,一般在这里需要使用速度快、效率高的算法,使eden去能尽快空闲出来。

 

5.2 Full GC

  对于整个堆进行整理,包括Yong 、Tenured 、Permemate。Full GC因为需要对整个堆进行回收,所以比Scavenge GC要慢,因此应该尽可能减少Full GC的次数。在对JVM调优的过程中,很大一部分工作就是对于Full GC的调节。有如下原因可能导致Full GC:

  1)老年代被写满;

  2)持久代被写满;

  3)System.gc()被显式调用;

  4)上一次GC后Heap的区域分配策略动态变化。

参考:https://www.cnblogs.com/aspirant/p/8662690.html

转载于:https://www.cnblogs.com/li-jing/p/10840488.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值