滴滴三面:ZGC垃圾收集器了解吗?

文章内容收录到个人网站,方便阅读http://hardyfish.top/

ZGC,全称为Z Garbage Collector,是Java 11开始引入的一种低延迟、高吞吐的垃圾收集器,特点是:

  • 停顿极短:停顿时间通常在10ms以下,甚至达到亚毫秒级别。
  • 并发设计:几乎所有GC操作(标记、清理、压缩)都能与应用程序并发进行,大幅减少了应用暂停时间。
  • 支持超大堆内存:最高支持TB级别的堆内存,尤其适合内存较大的应用场景。

ZGC 核心特点:

  • Region-based 内存布局: 将堆分割成动态大小的Region,以便实现精细的内存管理。Region大小从几MB到数百MB不等,便于高效回收。
  • 并发标记、转移和重定位: GC线程和应用线程几乎完全并行,应用无需等待GC动作完成。大量的GC任务都发生在后台线程中。
  • 着色指针技术(Colored Pointers) : 指针上存储了额外信息(元数据),有效地跟踪对象状态,避免了长时间的停顿。
  • NUMA架构友好: 在多核多CPU服务器上有更高的性能表现。

ZGC适用场景:

  • 延迟敏感的服务: 如实时交易系统、高频交易、游戏服务器、电商实时推荐系统等。
  • 大堆内存应用: 适合堆大小从数十GB到数TB的大型Java应用。
  • 需要实现低暂停高吞吐的业务: 如实时流处理、大数据分析实时服务。

如何开启ZGC?

在启动Java应用时,通过以下参数启用ZGC:

-XX:+UseZGC

设置初始和最大堆:

-Xms10G -Xmx10G

示例:

java -XX:+UseZGC -Xms10G -Xmx10G -jar your-app.jar

与其他GC比较:

ZGC (GZero)

极短(亚毫秒~毫秒级)

极强

数GB到数TB

G1GC

短(10~200ms级)

较高

较强

数GB到数百GB

CMS

短(百毫秒级)

一般

中等

数GB到几十GB

总结:

ZGC(GZero)是一款面向超低延迟场景的高性能垃圾收集器,适合追求极低延迟和稳定性能的现代化Java服务,尤其在大堆内存场景中表现突出。

#面试题##面试#
大厂面试每日一题 文章被收录于专栏

大厂每日一道面试题!

全部评论

相关推荐

1. 自我介绍2. 手撕前缀相同字符3. 介绍实习项目4. 怎么解决消息丢失问题?5. 重复消费问题怎么解决?6. rabbitmq和kafka区别?7. 你们运用线程池的地方都是只是用来异步的处理一些问题吗?还是说也用了一些并发的操作?8. 线程池是动态的吗?还是静态的写死在代码里面的?9. 线程池有哪些核心参数,以及线程池是怎么根据这些核心参数去创建线程?拒绝策略有哪几种?10. 有哪些方法或者方式可以让我的主线程等待所有的子线程完成之后再去执行?11. (接上个问题)如果我想要对我的每个子线程任务设置不同的超时时间,怎么做?future类里面那个get,它可以指定每个子任务的一个最大的执行时间。12. redis的分布式锁,然后你们这个分布式锁是自己实现的,还是基于市面上一些已经封装好的?13. redission底层是怎么具体实现的吗?14. 有哪些实际开发中可能你的代码写的事务不生效,那会导致你的代码写的事务不生效?15. 怎么避免缓存穿透、缓存击穿、缓存雪崩吗?16. redis缓存是立刻删除的么?17. 你知道哪些垃圾回收器?说一下CMS和G1区别?18. 哪些情况下会使得对象从年轻态晋升到老年代?19. 这个系统其实为上百家医院提供服务吗?然后你们这个系统日常的峰值的时候QPS高吗?20. 对外部提供的接口,他们有要求接口的性能很高吗?21. 要求实时性比较高的接口,TP99大概多少?22. 之前有对接口压测相关吗?23. 你知道TP99或者TP999的概念吗?
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务