推荐的Java服务环境:JDK17+ZGC(JDK 21的ZGC支持分代回收,性能更高)
文章目录
- 引言
- ZGC
-
- ZGC原理
- ZGC特点
- ZGC有多种GC触发机制
- ZGC垃圾回收周期
- ZGC垃圾回收器相关参数
- II JDK17
-
- JDK17升级实践过程
- JVM参数参考
- 升级JDK的风险
- III 从JDK 7到JDK 17的JVM演变
-
- JDK 8之前的实现:方法区与永久代
- JDK8的JVM
- JDK11的ZGC垃圾回收器
- 未来
- see also
-
- 美团技术团队
- 读屏障
- 判断Linux系统内核版本是否大于等于4.7
- 判断系统是否为 NUMA架构
- 相关资源
引言
建议Java服务使用OpenJDK17运行
- Spring AI SDK支持的JDK版本最小为17,升级到JDK 17能更好地拥抱AI新技术;
- ZGC作为新一代垃圾回收器,各项性能指标都比较突出,升级之后,机器成本和性能收益明显;
- Linux系统内核版本大于等于4.7,方便使用zgc的特效。
ZGC
ZGC原理
- 采用标记-复制算法
- ZGC在标记、转移和重定位阶段几乎都是并发的
ZGC特点
- 基于Region:G1的每个Region大小是完全一样的,而ZGC的Region更灵活,其中大型Region大小不固定,可以动态变化,也不会被重分配,因为复制一个大对象代价太高。
- 部分压缩:基于Region,“标记-整理”,相对CMS压缩时间更短。