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

5.GC是什么时候触发的

时间:2019-05-09 20:21:14      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:回收   并且   sys   垃圾回收   jvm调优   bsp   导致   变化   jvm   

  由于对象进行了分代处理,因此垃圾回收区域、时间也不一样。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

5.GC是什么时候触发的

标签:回收   并且   sys   垃圾回收   jvm调优   bsp   导致   变化   jvm   

原文地址:https://www.cnblogs.com/li-jing/p/10840488.html

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