5.GC是什么时候触发的

Posted li-jing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于5.GC是什么时候触发的的主要内容,如果未能解决你的问题,请参考以下文章

oracle触发器的具体定义,什么时候用到!其优点是什么!

水平触发和边沿触发(IO复用)

2016/4/14腾讯Android实习面试

HashMap什么时候会触发链表转红黑树

如何触发dragstart的小结,浅谈什么时候应该触发dragstart

什么时候触发自动释放池