垃圾收集器
手机算法是内存回收的方法论, 垃圾收集器是内存回收的具体实现.
并行: 指多条垃圾收集线程并行工作, 但此时用户线程仍然处于等待状态
并发: 值用户线程与垃圾收集线程同时执行 (但并不一定是并行的), 用户程序在继续运行, 而垃圾收集程序运行于另一个 CPU 上.
Serial 收集器
单线程收集器, 也就是说是必须停止所有的工作线程, 知道垃圾收集完毕. 对于单 CPU 来说更加高效. 所以适合运行于 Client 模式下的虚拟机.
新生代采用复制算法. 老年代采用标记整理算法.
ParNew 收集器
是 Serial 的多线程版本 (看图的话是在新生代多线程同时进行 GC). 是 GC 线程有多个, 所有其他工作线程都停止. 多线程 GC 会有线程间交互这种上下文切换的效率损失.
新生代采用复制算法. 老年代采用标记整理算法.
Parallel Scavenge 收集器
多线程同时 GC. 这款收集器的目的是更高的吞吐量. 是吞吐量优先收集器, 高吞吐量会使得 GC 停顿时间变长. 但总体的用户运行代码时间变多了. 吞吐量: 运行用户代码时间 /(运行用户代码时间 + 垃圾收集时间)
该收集器既可以自动调节也可以通过手动配置来优化收集过程.
Serial Old 收集器
单线程收集器, 标记整理算法. 是 Serial 的老年代版本.
Parallel Old 收集器
是 Parallel Scavenge 收集器的老年代版本 标记整理算法.
解决了只能和 Serial Old 收集器搭配的尴尬境地.
CMS 收集器
Concurrent Mark Sweep 收集器是以获取最短回收停顿时间为目的的收集器. B/S 应用关注用户的体验, 更短的响应时间. CMS 这点很适合.
从名字来看, 并发标记清除. 是一款可以和用户线程并发的收集器.
分为四个步骤: 初始标记, 并发标记, 重新标记, 并发清除. 其中初始标记和重新标记需要 stop the world, 也就是停止其他工作线程.
来源: http://www.bubuko.com/infodetail-2879672.html