JAVA 中垃圾回收GC 的类型

Posted 四猿外

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 中垃圾回收GC 的类型相关的知识,希望对你有一定的参考价值。

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

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

Full GC: 对整个堆进行整理,包括Young、Tenured 和Perm。Full GC 因为需要对整个对进行回收,所以比Scavenge GC 要慢,因此应该尽可能减少Full GC 的次数。在对JVM调优的过程中,很大一部分工作就是对于FullGC 的调节。有如下原因可能导致Full GC:· 年老代(Tenured)被写满、持久代(Perm)被写满、System.gc()被显示调用、上一次GC之后Heap 的各域分配策略动态变化。

以上是关于JAVA 中垃圾回收GC 的类型的主要内容,如果未能解决你的问题,请参考以下文章

53.垃圾回收算法的实现原理启动Java垃圾回收Java垃圾回收过程垃圾回收中实例的终结对象什么时候符合垃圾回收的条件GC Scope 示例程序GC OutOfMemoryError的示例

java中是怎样进行垃圾回收的?

Java 垃圾回收(GC) 泛读

Java垃圾回收机制(GC)详解

Java垃圾回收机制是啥?

Java 虚拟机 - GC 垃圾回收机制分析