问答题186/1053cms和g1有没有了解过,它们有什么区别

难度:
2022-03-30 创建

参考答案:

CMS和G1垃圾回收器的比较

CMS垃圾回收器

特点

  • 关注低延迟,适合对响应时间敏感的应用(如交互式应用)。
  • 基于“标记-清除”算法,不对内存进行压缩,可能产生碎片。

工作流程

  1. 初始标记(短暂停顿):标记直接可达的对象。
  2. 并发标记:遍历对象引用链,标记存活对象。
  3. 重新标记(短暂停顿):修正并发标记阶段可能遗漏的对象。
  4. 并发清除:清理不可达对象,无需暂停应用线程。

缺点

  • 可能会产生内存碎片,需要Full GC来压缩内存。
  • **Stop-The-World(STW)**次数较多。
  • 对硬件资源(如CPU)敏感,高并发环境下性能可能受限。

G1垃圾回收器

特点

  • 关注吞吐量低延迟的平衡,适合大堆内存应用(>4GB)。
  • 将堆分为多个Region(大小相等),通过“区域化”的方式管理内存,减少碎片。

工作流程

  1. 年轻代GC(Minor GC):清理Eden和Survivor区。
  2. 混合GC(Mixed GC):清理年轻代和部分老年代的高回收价值Region。
  3. Full GC:在无法满足分配需求时触发。

优点

  • 避免了内存碎片问题,因其支持区域压缩
  • 停顿时间可控:可以通过设置参数(如-XX:MaxGCPauseMillis)控制目标停顿时间。
  • 预测性强:对GC耗时和内存利用率有明确的预测能力。

缺点

  • 对于小内存应用不适合,初始性能开销可能较大。
  • 复杂性高,调优难度大。

CMS与G1的主要区别

特性CMSG1
主要目标低延迟,适合响应时间敏感应用平衡低延迟和高吞吐量,适合大堆应用
回收方式标记-清除(无压缩,产生碎片)标记-整理(带压缩,无碎片)
内存管理分代管理(新生代/老年代)分区管理(Region)
停顿时间不可控,视GC过程而定可通过参数设置目标停顿时间
硬件需求高CPU占用,资源敏感适合多核大内存环境
适用场景中小型堆内存应用(对响应时间要求高)大堆内存应用(吞吐量与低延迟并重)

最近更新时间:2024-12-02