【编程底层思考】为什么zgc回收垃圾延时这么低,及其用到的关键技术,以及何为内存多重映射技术和ZGC的栈水位屏障(Stack Watermark Barrier)技术

一、为什么zgc回收垃圾延时这么低,及其用到的关键技术

JDK 11 引入的 ZGC(Z Garbage Collector)是一款设计目标为低延迟的垃圾回收器,它通过多种技术手段实现了将停顿时间控制在10毫秒以内的目标。以下是一些关键技术:

  1. 并发处理:ZGC 大部分垃圾回收工作与应用程序线程并发执行,这意味着在应用程序运行的同时,垃圾回收线程也在后台进行内存回收工作,从而减少了需要停止应用程序线程STW, Stop-The-World的频率和时长。
  2. 颜色指针:ZGC 使用颜色指针技术来标记对象的状态,这允许在不需要额外同步操作的情况下,快速识别对象是否已经被标记或移动。
  3. 读屏障:ZGC 利用读屏障来处理并发阶段的对象引用更新问题。当应用程序线程访问对象时,如果遇到屏障,会触发必要的GC操作,例如对象的标记或内存的重定位。
  4. 内存多重映射:ZGC 利用内存多重映射技术,将物理内存映射为不同的地址视图,这允许在不同的GC阶段灵活地切换地址视图,而不需要移动实际的数据。
  5. 堆内存划分:ZGC 将堆内存划分为多个小的区域(regions),每个区域可以独立地进行垃圾回收,这样可以并行处理多个区域的回收工作,提高效率。
  6. 自适应算法:ZGC 采用自适应算法来确定垃圾回收的触发时机,根据应用程序的内存分配模式动态调整GC的执行,以避免内存分配压力导致的GC暂停。
  7. 优化的GC暂停:ZGC 优化了GC暂停的阶段,如初始标记和初始转移阶段,这些阶段需要STW,但ZGC通过优化算法减少了这些阶段的执行时间。
  8. 避免全局安全点:ZGC 通过栈水位技术避免了在GC时需要到达全局安全点的需求,减少了因等待所有线程达到安全点而造成的延迟。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dylanioucn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值