Jvm年轻代垃圾收集器

Jvm年轻代垃圾收集器教程

Jvm 的年轻代垃圾收集器可以分为:Serial 收集器、ParNew 收集器和 Parallel Scavenge 收集器。

Serial收集器详解

定义

Serial 是最基本也是发展历史最悠久的收集器。这个收集器是一个 “单线程” 的收集器。

说明

这个 “单线程” 的意义并不是说它仅会使用一个 CPU 或一条收集线程去完成垃圾收集工作,而是它很霸道,只要它在进行垃圾回收的时候,必须要暂停其它所有线程的工作,直到执行垃圾回收的线程执行结束。“ Stop The World ” 这个名词就由此而来。

运行效果图

09_Serial 收集器运行效果图.png

Serial收集器优缺点

优点

简单高效。

缺点

在执行垃圾回收的时候,会将所有用户正在工作的线程全部停掉,客户体验很不好,在使用系统过程中老是停顿。

ParNew收集器详解

定义

ParNew 收集器是 Serial 收集器的多线程版本。

说明

它的收集算法,Stop The World、对象的分配规则、回收策略和 Serial 收集器是一样的,不同的地方就是在于在执行回收的时候,用多线程的方式回收。

运行效果图

10_ParNew 收集器运行效果图.png

Parallel Scavenge收集器

定义

Parallel Scavenge 表面上看上去和 ParNew 是一样的。它也是使用复制算法的收集器,并且是并行的多线程收集器。

说明

Parallel Scavenge 是吞吐量(CPU 用于运行用户代码的时间与 CPU 总消耗时间的比值 )优先的收集器。它的目标是达到一个可控的吞吐量。

运行效果图

11_Parallel Scavenge 效果图.png