JVM 面试题——CMS和G1的区别

  1. 算法实现:
    1. CMS基于标记-标记清除算法实现
    2. G1基于标记-标记整理算法实现。
  2. 停顿时间:
    1. CMS的目标是获取最短的回收停顿时间,但它在并发标记阶段会占用一部分CPU资源,可能导致应用程序变慢。
    2. G1则能够利用多核和多CPU环境,实现可预测的停顿,同时保留分代收集的特性。
  3. 内存碎片:
    1. CMS使用标记-清除算法会产生大量的空间碎片,这可能导致在老年代还有足够空间时无法找到足够大的连续空间来分配新对象,从而触发Full GC。
    2. G1通过使用独立区域(Region)概念,避免了传统标记-清除算法导致的内存碎片问题,因为它在局部(两个Region)上基于复制算法实现,整体上基于标记-整理算法。24
  4. 内存管理:
    1. CMS将堆分为一块连续的新生代和一块连续的老年代,而G1将堆分为2048个Region,这些Region可以作为新生代或老年代,且新生代的大小可以根据期望的暂停时间动态调整。
  5. 大对象处理:
    1. 在CMS中,大对象直接分配到老年代,且在Young GC时无法回收这些大对象,必须等到CMS GC才能回收。
    2. 在G1中,大对象直接分配到Humongous大对象区域,在Mixed GC时可以回收没有引用的Humongous对象。
  6. 内存使用和性能:
    1. G1相比CMS会使用更多的内存和CPU负载,因此更适合用于大堆的应用。

相关推荐

  1. JVM 面试——CMSG1区别

    2024-03-15 17:40:02       20 阅读
  2. 垃圾回收器CMSG1区别

    2024-03-15 17:40:02       38 阅读
  3. JVM垃圾收集器之CMS垃圾收集器G1垃圾收集器

    2024-03-15 17:40:02       21 阅读
  4. 面试httphttps区别

    2024-03-15 17:40:02       20 阅读
  5. 面试:指针引用区别

    2024-03-15 17:40:02       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 17:40:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 17:40:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 17:40:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 17:40:02       18 阅读

热门阅读

  1. 数字电子技术实验(二)

    2024-03-15 17:40:02       18 阅读
  2. C++ STL入门:解锁现代C++编程的强大工具箱

    2024-03-15 17:40:02       18 阅读
  3. Oracle Rac集群日常维护管理命令

    2024-03-15 17:40:02       17 阅读
  4. Rabbitmq---topics模型之动态路由

    2024-03-15 17:40:02       18 阅读
  5. IUV-5G全网仿真软件实训手册-手工整理

    2024-03-15 17:40:02       17 阅读
  6. 神经网络量化

    2024-03-15 17:40:02       18 阅读
  7. [Vue]插槽

    2024-03-15 17:40:02       19 阅读
  8. openssl生成免费证书

    2024-03-15 17:40:02       22 阅读