JVM(5)--垃圾收集器

如果说垃圾回收算法是内存回收的方法论,那么垃圾收集器就是算法的具体实现。

这里讨论jdk1.7Update14之后Hotspot的收集器。

这个虚拟机包含的收集器如下图所示:

 

1、Serial收集器

它是一个新生代的单线程收集器,之所以叫单线程是因为,它不仅只使用一个CPU一个线程,而且在它进行垃圾回收的时候必须暂停其他所有线程,指定它回收结束。

 

2、ParNew收集器

它是Serial收集器的多线程版本,其他基本没差别。

 

3、Parallel Scavenge收集器

和ParNew相似,区别在于它的关注点在达到一个可控制的吞吐量。

提供了几个参数:-XX:MaxGCPauseMillis,控制最大垃圾收集停顿时间、-XX:GCTimeRatio,设置吞吐量大小、-XX:+UseAdaptiveSizePolicy,动态地自动设置新生代大小,比例等等参数。

 

4、Serial Old收集器

Serial收集器的老年代版本。使用标记整理方法。

 

5.Parallel Old收集器

Parallel Scavenge收集器的老年版本。

 

6、CMS收集器

以获得最短停顿时间为目的的收集器,在Web项目中,对响应尤其在意,CMS就比较符合。

CMS基于标记清楚算法实现,整个过程分为四个步骤:

初始标记,并发标记,重新标记,并发清除。

其中初始标记和重新标记任然需要暂停其他所有线程。

其中最耗时的并发标记和并发清能和其他线程一起运行。

 

 7、G1收集器

特点:并行并发,分代收集,空间整合,可预测的停顿

步骤:初始标记,并发标记,最终标记,筛选回收

 

posted @ 2018-08-03 16:04  蒋曾  阅读(93)  评论(0编辑  收藏  举报