3 Java虚拟机之垃圾收集器

本文是根据《深入理解Java虚拟机》自己整理的笔记,仅供个人学习。

 

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

 

3 Java虚拟机之垃圾收集器

1 serial 收集器

单线程的收集器,进行垃圾收集时,暂停其他所有工作线程直到收集结束。

优点:没有线程交互的开销     缺点:stop the world

3 Java虚拟机之垃圾收集器

 

2 ParNew 收集器

serial收集器的多线程版本,多条线程进行垃圾回收。

3 Java虚拟机之垃圾收集器

3 Java虚拟机之垃圾收集器

3 Parallel Scavenge 收集器

Parallel Scavenge 收集器的目的是尽可能达到一个高的吞吐量。即 CPU用于运行用户代码的时间 | CPU总消耗时间的比值。

4 Serial Old 收集器

单线程收集器,使用标记-整理算法。

如上图3-6.

5 Parallel Old收集器

使用多线程和标记-整理算法。

3 Java虚拟机之垃圾收集器

6 CMS收集器

 CMS是一种以获得最短回收停顿时间为目标的收集器。收集过程分为4个步骤:

   (1)初始标记

   (2)并发标记

   (3)重新标记

   (3)并发清除

3 Java虚拟机之垃圾收集器

优点:并发收集 低停顿

7 G1收集器

3 Java虚拟机之垃圾收集器

G1收集器的运作大概分为以下几个步骤:

(1) 初始标记

(2) 并发标记

(3)最终标记

(4)筛选回收