CMS收集器: 实现了用户线程和垃圾回收线程同时工作
- 初始标记:暂停其他线程,标记直接与GC Roots相连的对象。
- 并发标记:同时开启GC线程和用户线程。记录发生引用更新的地方。
- 重新标记:修正并发标记阶段因为用户进程继续运行导致产生变动的那一部分对象的标记记录。
- 并发清除:执行清除GC Roots不可达对象的任务。
缺点:
- 注重用户体验,对CPU资源敏感。
- 无法处理浮动垃圾。
- 使用 “标记-清除” 算法,会产生大量空间碎片。
G1收集器: 一款面向服务器的垃圾收集器。G1维护了一个优先列表,每次根据允许的收集时间,优先回收价值最大的Region。
优点:
- 基于 “标记-整理” 算法,不产生内存碎片。
- 可以精确地控制停顿的时间,在不牺牲吞吐量的情况下实现最短停顿垃圾回收。