JVM学习笔记---老年代垃圾收集器
老年代常见垃圾收集器
1,Serial Old收集器 (-XX:+UseSerialOldGC, 采用标记-整理算法)
- 单线程收集,进行垃圾收集时,必须暂停所有的工作线程
- 简单高效,Client模式下默认的老年代垃圾收集器
2,Parallel Old收集器 (-XX:+UseParallelOldGC, 采用标记-整理算法)
- 多线程,吞吐量优先
3,CMS收集器 (-XX:+UseConcMarkSweepGC, 采用标记-清除算法)
- 初始标记:Stop-the-World
- 并发标记:并发追溯标记,程序不会停顿
- 并发预清理:查找执行并发标记阶段从年轻代晋升到老年代的对象
- 重新标记:暂停虚拟机,扫描CMS堆中的剩余对象
- 并发清理:清理垃圾对象,程序不会停顿
- 并发重置:重置CMS收集器的数据结构
4,G1收集器 (-XX:UseG1GC, 采用复制+标记+整理算法)
- 将整个Java堆内存划分成多个大小相等的Region
- 年轻代和老年代不再物理隔离
Garbage First收集器的特点
- 并行和并发
- 分代收集
- 空间整合
- 可预测的停顿