简介:
Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、不同的版本的虚拟机所提供的垃圾收集器都可能会有很大的差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。Sun HotSpot虚拟机1.6板虚拟机所包含的收集器如下所示:
单线程、新生代,复制算法收集器,工作原理示意图:
多线程版本的Serial收集器,工作原理示意图:
和以上收集器一样,也是新生代,复制算法,并行多线程的收集器,特点是能够精准控制吞吐量
基于标记-整理算法的老年代收集器,主要两大用途如下:
- 在JDK1.5之前的版本中与Parallel Scavenge 收集器搭配使用
- 作为CMS收集器的后背预案
工作原理示意图如下:
CMS收集器是基于标记-清楚算法的,一种以获取最短回收停顿时间伟目标的收集器
优点:
- 并发收集
- 低停顿
缺点:
- CMS收集器对CPU资源非常敏感
- CMS收集器无法处理浮动垃圾,可能出现Concurrent Mode Failure 失败而导致另一次Full GC的产生
- 基于标记-清楚算法,容易产生大量空间碎片
当前收集器技术发展的做前沿成果,JDK1.7发布后的成熟商用版本的收集器
优点:
- 基于标记-整理算法,不会产生空间碎片
- 可以非常准确的控制停顿