JVM(四)垃圾收集器_分代收集器

次收集scavenge GC
原理:当Eden区不足已为对象分配内存空间时,会触发scavenge GC,收集器清除非存活的对象,把存活对象放在survivor区,再去整理两个survivor区。
特点:使用频繁,速度快

 

全收集:Full GC/Major GC

原理:当老年带堆内存不足或调用System.gc时会触发全收集。全收集根据堆内存大小来确定执行时间

注:minor GC会把对象从新生代引入到老年带,在执行全收集之前,最少会执行一次minor GC。全收集执行GC时,速度一般比minor GC慢十倍。

 

 

分代收集器分类

有如下几种

 

#serial:

概念:新生代收集器,jdk1.3以前使用,串行的收集器。hotspot运行在client端次收集器中默认的收集器

特点:单线程运行、做GC时,需要停止所有的线程。

如下图所示:

 

 

#parNew

概念:新生代收集器,是serial的多线程版本,配置基本和serial一样。故在多核cpu下,性能比serial高

注:单核cpu下,效率比serial还低。安全点的时间也缩短了。

如下图所示:

 

 

#parallel Scavenge 

概念:为提高吞吐而产生,属于新生代的收集器

吞吐量 = 运行用户代码时间 / ( 运行用户代码时间 + 垃圾收集时间 )

参数:  

MAXGcPauseMillis:GC收集完了之后的暂停毫秒数

GcTimeRatio: 垃圾收集器的占比

UseAdaptiveSizePolicy:GC自动调节策略,无需再指定上面的两个参数

 

#serval old

概念:老年代收集器,和serval 差不多,能和每个年轻代的收集器搭配使用

 

#Paralled old

概念:和parallel Scavenge差不多,只能和parallel Scavenge搭配使用

 

#CMS(重要)

概念:老年代的收集器,为减少安全点时间为目标的收集器,用户线程和GC线程能一起执行。只能和ParNew配合

 

 #G1

概念:面向服务端的收集器,jdk1.7开始使用,不是默认收集器。

特点:可以运用在年轻代和老年代

 

 

 

 

注:

GC并行:GC线程

GC并发:用户线程和GC线程能一起执行

 

posted on 2019-06-11 10:01  周公  阅读(581)  评论(0编辑  收藏  举报

导航