Su的技术博客

  • 首页
  • 原创
  • 视频
  • Java
  • MySQL
  • DDD
  • 事故复盘
  • 架构方案
  • AI
  • Other
  • 工具
    • AI工具集
    • 工具清单
    • JSON在线格式化
    • JSON在线比较
    • SQL在线格式化
  • 打赏
  • 关于
路很长,又很短
  1. 首页
  2. Java
  3. 正文
                           

【京东零售】JVM GC配置指南

2023-11-01 2481点热度 3人点赞 0条评论

前言

本文是京东交易链路众多核心应用GC优化经验的总结,旨在简明扼要说明各种回收器的基本调优设置,为各应用GC配置提供指引。

一、JDK版本

以下所有优化全部基于JDK8版本,强烈建议低版本升级到JDK8,并尽可能使用update_191以后版本。

二、如何选择垃圾回收器

响应优先应用:面向C端对响应时间敏感的应用,堆内存8G以上建议选择G1,堆内存较小或低版本JDK选择CMS;

吞吐量优先应用:对响应时间不敏感,以高吞吐量为目标的应用(如MQ、Worker),建议选择ParallelGC;
三、各回收器优化参数

【基本参数配置(所有应用、所有回收器都需要)】

  • Xmx(一般为容器内存的50%)

  • Xms(与Xmx一致)
  • XX:MetaspaceSize(通常256M~512M)
  • XX:ParallelGCThreads=容器核数
  • XX:CICompilerCount=容器核数(必须大于等于2)

【ParallelGC】

除以上参数外,一般不需要额外调优(JDK8默认回收器)

【CMS】

  • XX:+UseConcMarkSweepGC
  • Xmn (一般为堆内存的三分之一),尤其是配置了ParallelGCThreads后必须配置此参数
  • XX:ConcGCThreads=n(默认为ParallelGCThreads/4,可视情况调整至ParallelGCThreads/2)
  • XX:+UseCMSInitiatingOccupancyOnly
  • XX:CMSInitiatingOccupancyFraction=70(推荐值)

【G1】

  • XX:+UseG1GC
  • XX:ConcGCThreads=n(默认为ParallelGCThreads/4,可视情况调整至ParallelGCThreads/2)
  • XX:G1HeapRegionSize=8m(若堆内存在8G以内且有较多大对象推荐设置此值)
* 注意不要设置-Xmn 和 XX:NewRatio

【其他调优参数】

  • XX:+ParallelRefProcEnabled 如果GC时Reference处理时间较长,例如大量使用WeakReference对象,可以通过此参数开启并行处理

四、开启GC日志
  • XX:+PrintGCDetails
  • XX:+PrintGCDateStamps
  • Xloggc:/export/Logs/gc.log
五、如何判断GC是否正常
  1. GC是否频繁:YoungGC频率一般几十秒钟一次,FullGC一般每天几次,注意G1回收器不应该出现FullGC。
  2. GC耗时:耗时主要取决于堆内存大小及垃圾对象数量。YoungGC时间通常应在几十毫秒,FullGC通常在几百毫秒。
  3. 每次GC内存是否下降:应用刚启动时,每次YoungGC内存应该回收到较低水位,随着时间推移老年代逐步增多,内存水位会逐步上涨,直到FullGC/MixedGC(G1),内存会再次回到较低水位,否则可能存在内存泄漏。
  4. 如果使用ParallelGC,堆内存耗尽才会触发FullGC,所以不用配置堆内存使用率告警,但需关注GC频率。

 

 

本文仅供学习!所有权归属原作者。侵删!文章来源: 京东零售技术 -交易研发 王利辉 :http://mp.weixin.qq.com/s/MwTvQtQwaHgR_ey6IkHD_w

更多文章:

  1. 生产环境的CMS垃圾回收,一定要这样配置参数
  2. JVM 内存大对象监控和优化实践
  3. log4j2同步日志引发的性能问题
  4. 高并发场景下JVM调优实践之路
  5. JVM GC问题定位排查方法综述
  6. G1GC垃圾回收器实践案例
  7. JVM和机器规格调优在有赞的实践
  8. JVM垃圾回收器CMS原理与调优
  9. ParNew+CMS 实践案例 : HiveMetastore FullGC诊断优化
  10. ParNew+CMS 实践案例 (一)- NameNode YGC诊断优化
标签: 京东零售 JVM GC CMS Java 垃圾回收器 性能调优 G1
最后更新:2023-11-01

coder

分享干货文章,学习先进经验。

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

广告
最新 热点 推荐
最新 热点 推荐
微服务架构:必懂的6大性能维度 Anthropic Code with Claude 开发者大会:开启 AI Agent 新时代 视频笔记-微服务架构P4:必懂5种设计模式 视频笔记:微服务架构P4 设计模式:每服务数据库、API 网关和事件驱动架构 干货 | 论Elasticsearch数据建模的重要性 马蜂窝消息总线——面向业务的消息服务设计 基于 MySQL Binlog 实现可配置的异构数据同步 视频笔记:Google发布Agent2Agent协议
视频笔记:微服务架构P4 设计模式:每服务数据库、API 网关和事件驱动架构干货 | 论Elasticsearch数据建模的重要性视频笔记-微服务架构P4:必懂5种设计模式Anthropic Code with Claude 开发者大会:开启 AI Agent 新时代微服务架构:必懂的6大性能维度
用这10个技巧帮你写出更好的Java代码 系统设计 | 处理业务公式 【视频】NettyInAction作者:统治一切的框架Netty- One Framework to rule them all 从滴滴的故障我们能学到什么 手把手教你实战TDD 系统设计 | UUID 和 自增 ID 怎么选? 如何让Java编译器帮你写代码 一次访问Redis延时高问题排查与总结

CRUD (1) Event Sourcing (1) graphql (1) id (1) NoSQL (1) quarkus (1) rest (1) RocketMQ (2) Spring Boot (1) zk (1) zookeeper (1) 上下文 (1) 事务消息 (1) 二级缓存 (1) 值对象 (1) 关系数据库 (1) 分布式缓存 (1) 原子性 (1) 唯一ID (1) 商品 (1) 多对多 (1) 子域 (1) 字符集 (1) 客户端心跳 (1) 幂等 (2) 干货 (1) 并发 (1) 应用场景 (1) 应用架构图 (1) 康威定律 (2) 异步复制 (1) 微服务架构 (3) 总体方案 (1) 技术方案 (2) 技术架构 (2) 技术架构图 (1) 技能 (1) 持续集成 (1) 支撑域 (1) 故障恢复 (1) 数据架构图 (1) 方案选型 (1) 日记 (1) 服务发现 (1) 服务治理 (1) 服务注册 (2) 机房 (1) 核心域 (1) 泄漏 (1) 洋葱架构 (1) 消息队列 (5) 源码剖析 (1) 灰度发布 (1) 熔断 (1) 生态 (1) 画图工具 (1) 研发团队 (1) 线程 (2) 组织架构 (1) 缓存架构 (1) 编码 (1) 视频 (20) 读写分离 (1) 贵州 (1) 软件设计 (1) 迁移 (1) 通用域 (1) 集群化 (1) 雪花算法 (1) 顺序消息 (1)

推荐链接🔗
  • AI工具集
  • 工具箱🛠️

COPYRIGHT © 2014-2025 verysu.com . ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备15033072号-2