收集器

https://blog.csdn.net/weixin_42449534/article/details/98599103

新生代

  • Serial(串行、client新生代默认)/ParNew(serial多线程版本)
    • 新生代
    • 复制算法
    • stop the world
  • Parallel Scavenge(server新生代默认)
    • 并行的多线程版本
    • 标记复制算法复制算法
    • 追求可控的吞吐量

老年代

  • Serial(serial老年代版本)
    • 标记整理算法---同下
    • 简单、client老年代默认
    • 跟serial一样的有:stw/单线程
  • Parallel Old(Parallel Scavenge老年代版本)
    • 标记整理算法---同上
    • 跟新生代一样的是:stw/多线程/吞吐量优先

比较特殊的一个:

  • CMS(标记清除算法、concurrent mark sweep 并行标记清除)
    • 停顿少、用户体验好(高响应
    • 初始标记、并发标记、重新标记、并发清除
    • 。。。(具体查看网址或者本地笔记。)
  • G1
    • 面向服务端引用的垃圾收集器,为了替换cms收集器(我也不懂..)
    • 整体看是标记-整理算法,局部看是复制算法不会有内存碎片
    • 分代收集(新生代/老年代)
    • 并行/并发:利用多核/多cpu环境,缩短停顿时间、可与用户线程并发执行
    • 可预测停顿(我也不懂..)

面试点

CMS和G1的区别?

  • https://blog.csdn.net/xzp_12345/article/details/81839026
  • CMS是标记清除算法,G1是标记整理算法/复制算法,所以CMS会有内存碎片问题
  • CMS用在老年代,G1用在新生代和老年代
  • 在STW方面,CMS是做到很短的停顿时间,G1是做到可预测停顿(能明确指定ms的时间片段)
  • 垃圾回收过程不一样(待看..)
    图片说明

https://blog.csdn.net/weixin_42449534/article/details/98599103