侧边栏壁纸
博主头像
月伴飞鱼 博主等级

行动起来,活在当下

  • 累计撰写 39 篇文章
  • 累计创建 25 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录
JVM

JDK11中新出的ZGC有什么特点?

月伴飞鱼
2025-03-12 / 0 评论 / 1 点赞 / 5 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

JDK 11 中引入的 ZGC(Z Garbage Collector)的特点

ZGC 是一种专注于低延迟的垃圾回收器,旨在提供极短的暂停时间,同时支持大规模内存应用,以下是其主要特点:

1. 低停顿(Low Pause Time)

  • 特点

    • ZGC 的核心目标是保持极低的暂停时间,通常在亚毫秒到几毫秒级别。

    • 停顿时间与堆大小、存活对象集(live-set)或根集(root-set)的大小无关,能很好地避免 Full GC 带来的长时间停顿。

  • 场景

    • 延迟敏感的实时应用,如金融交易系统、在线游戏。

2. 高吞吐量(High Throughput)

  • 特点

    • ZGC 是一个并发垃圾收集器,大部分垃圾收集工作在 Java 应用线程运行的同时完成。

    • 通过多线程并发标记和回收,最大限度减少对应用程序响应时间的影响。

  • 好处

    • 在低停顿的同时,仍然能保持较高的应用程序吞吐量。

3. 兼容性(Compatibility)

  • 特点

    • 完全兼容现有的 Java 应用程序,开发者无需更改代码即可使用。

    • 限制

      • 仅支持 64 位 Linux、macOS 和 Windows 系统。

      • 不支持 32 位平台。

      • 不支持压缩指针(Compressed Oops),会占用更多内存。

    • 配置

      • 启用方式:

        -XX:+UnlockExperimentalVMOptions -XX:+UseZGC

4. 支持大堆(Large Heap Support)

  • 特点

    • ZGC 可支持堆大小从 8MB 到 16TB,这是其他垃圾收集器无法比拟的。

    • 适用于内存需求巨大的应用,如大数据处理、机器学习应用。

5. 简单性(Simplicity)

  • 特点

    • ZGC 的设计和实现尽量简化,代码库相对较小,便于维护和扩展。

    • 通过分区管理内存,简化垃圾回收的复杂度。

6. 不分代设计(Non-generational)

  • 特点

    • ZGC 并不使用分代回收机制(如年轻代、老年代),而是将内存划分为多个区域(Region),并根据垃圾的分布情况优先回收高垃圾率的区域。

    • 在标记阶段对整个堆进行标记,但回收时仅针对部分内存,提升效率。

7. 颜色指针(Colored Pointers)

  • 特点

    • 使用 指针着色技术,在指针中嵌入元数据,避免 STW(Stop-The-World)操作。

    • 标记阶段使用此技术跟踪对象的引用关系,从而实现并发标记。

8. 应用场景

  • 延迟敏感型场景:如金融、游戏、流媒体服务。

  • 大内存场景:如大数据处理、机器学习、数据仓库。

  • 高吞吐和高并发场景:需要尽可能减少停顿对用户体验的影响。

9. 总结

特性

详细描述

低停顿

停顿时间在亚毫秒级别,不受堆大小影响

高吞吐量

并发垃圾回收,最大限度减少对应用的影响

大堆支持

支持堆内存从 8MB 到 16TB

兼容性

无需修改代码,兼容现有应用,支持 64 位平台

不分代设计

无代回收,优先处理垃圾较多的区域

简单性

设计和实现简洁,易于维护和扩展

指针着色

使用颜色指针实现并发标记,减少停顿时间

ZGC 是为低延迟和大规模内存场景设计的现代化垃圾收集器,适合对延迟敏感且需要高吞吐的 Java 应用。

公众号.png

1
JVM
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
    1. 支付宝打赏

      qrcode alipay
    2. 微信打赏

      qrcode weixin
博主关闭了所有页面的评论