「字节跳动」厉害!代表Java未来的ZGC深度剖析
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
JAVA程序最爽的地方是它的GC机制 , 开发人员不需要关注内存申请和回收问题 。 同时 , JAVA程序最头疼的地方也是它的GC机制 , 因为掌握JVM和GC调优是一件非常困难的事情 。 在ParallelOldGC、CMS、G1之后 , JDK11带来的全新的「ZGC」为我们解决了什么问题?Oracle官方介绍它是一个Scalable、Low Latency的垃圾回收器 。 所以它的目的是「降低停顿时间」 , 由此会导致吞吐量会有所降低 。 吞吐量降低问题不大 , 横向扩展几台服务器就能解决问题了啦 。 在全面介绍ZGC介绍 , 先统计一下大家线上环境在用什么垃圾回收器:
ZGC目标
如下图所示 , ZGC的目标主要有4个:
- 支持TB量级的堆 。 这你受得了吗?我们生产环境的硬盘还没有上TB呢 , 这应该可以满足未来十年内 , 所有JAVA应用的需求了吧 。
- 最大GC停顿时间不超10ms 。 这你受得了吗?目前一般线上环境运行良好的JAVA应用Minor GC停顿时间在10ms左右 , Major GC一般都需要100ms以上(G1可以调节停顿时间 , 但是如果调的过低的话 , 反而会适得其反) , 之所以能做到这一点是因为它的停顿时间主要跟Root扫描有关 , 而Root数量和堆大小是没有任何关系的 。
- 奠定未来GC特性的基础 。 牛逼 , 牛逼!
- 最糟糕的情况下吞吐量会降低15% 。 这都不是事 , 停顿时间足够优秀 。 至于吞吐量 , 通过扩容分分钟解决 。
ZGC概述接下来从几个维度概述一下ZGC 。
- New GC
- Single Generation
- Region Based
- Partial Compaction
- NUMA-aware
- Colored Pointers
- Load Barriers
- ZGC tuning
- Change Log
如下图所示 , 是ZGC和Parallel以及G1的压测对比结果(CMS在JDK9中已经被标记deprecated , 更高版本中已经被彻底移除 , 所以不在对比范围内) 。 我们可以明显的看到 , 停顿时间方面 , ZGC是100%不超过10ms的 , 简直是秒天秒地般的存在:
推荐阅读
- 字节跳动■印度封杀中国APP效果立竿见影?抖音被禁用,字节跳动损失420亿!
- 前线观察员|字节跳动高管说大实话,张忠谋曾如此对中芯,得亏老干妈家大业大
- 上游新闻|无电无光也能拍到高清图像,厉害了华为摄像机!“四无设计”突破时空限制
- 「昆虫」见过算你厉害——奇异的动物和昆虫
- [腾讯]字节跳动副总裁嘲讽腾讯:事情搞不清楚就起诉?腾讯晒照片回击硬刚
- 【抖音】印度封禁中国APP有效果了?抖音被禁用,字节跳动损失420亿!
- 抖音:印度封杀中国APP初见成效?抖音被禁用,字节跳动损失420亿!
- 稻草人在线|记性不好”,与腾讯隔空喊话,字节副总回应“知识储备不足
- 腾讯▲鹅厂有难,阿里、百度,当当、字节跳动神补刀,腾讯自嘲乐翻天
- 竺道|ShareChat公司推出短视频应用Moj,欲取代字节跳动的TikTok