JVM学习笔记---老年代垃圾收集器

老年代常见垃圾收集器

1,Serial Old收集器 (-XX:+UseSerialOldGC, 采用标记-整理算法)

  • 单线程收集,进行垃圾收集时,必须暂停所有的工作线程
  • 简单高效,Client模式下默认的老年代垃圾收集器

 JVM学习笔记---老年代垃圾收集器

2,Parallel Old收集器 (-XX:+UseParallelOldGC, 采用标记-整理算法)

  • 多线程,吞吐量优先

JVM学习笔记---老年代垃圾收集器 

3,CMS收集器 (-XX:+UseConcMarkSweepGC, 采用标记-清除算法)

  • 初始标记:Stop-the-World
  • 并发标记:并发追溯标记,程序不会停顿
  • 并发预清理:查找执行并发标记阶段从年轻代晋升到老年代的对象
  • 重新标记:暂停虚拟机,扫描CMS堆中的剩余对象
  • 并发清理:清理垃圾对象,程序不会停顿
  • 并发重置:重置CMS收集器的数据结构

 JVM学习笔记---老年代垃圾收集器

 4,G1收集器 (-XX:UseG1GC, 采用复制+标记+整理算法)

 

JVM学习笔记---老年代垃圾收集器 

  • 将整个Java堆内存划分成多个大小相等的Region
  • 年轻代和老年代不再物理隔离

     Garbage First收集器的特点

  1. 并行和并发
  2. 分代收集
  3. 空间整合
  4. 可预测的停顿