JVM-实战篇-GC调优
1 GC调优
- GC调优指的是对垃圾回收进行调优。GC调优的主要目标是避免由垃圾回收引起的程序性能下降。
- GC调优的核心分为三部分:
- 通过JVM参数的设置;
- 特定垃圾回收器的JVM参数的设置;
- 解决由频繁的FULLGC引起的程序性能问题。
- GC调优没有唯一的标准答案,重点学习调优的工具和方法。
2 GC调优的核心指标
2.1 吞吐量
- 分类:业务吞吐量 和 垃圾回收吞吐量
- 业务吞吐量:指的是在一段时间内,程序需要完成的业务数量。eg:在晚上8点到10点,支持用户查询500000条商品信息。
- 垃圾回收吞吐量:指的是CPU用于执行用户代码的时间与CPU总执行时间的比值。吞吐量越高,垃圾回收的效率就越高。
- 保证高吞吐量的常规手段有两条:
- 优化业务执行性能,减少单次业务的执行时间;
- 优化垃圾回收吞吐量。
2.2 延迟
- 概念:延迟指的是从用户发起一个请求到收到响应这其中经历的时间。eg:所有的请求必须在5秒内返回给用户结果;
- 延迟 = GC延迟 + 业务执行时间,所以如果GC时间过长,会影响到用户的使用。
2.3 内存使用量
- 概念:内存使用量指的是Java应用占用系统内存的最大值,一般通过JVM参数调整,在满足上述两个指标的前提下,这个值越小越好。
3 GC调优的方法
发现问题 - jstat工具
- jstat工具是JDK自带的一款监控工具,可以提供各种垃圾回收、类加载、编译信息等不同的数据;
- 使用方法为:jstat -gc 进程ID 每次统计的间隔(毫秒) 统计次数
发现问题 - visualvm插件
- VisualVm提供了一款Visual Tool插件,实时监控Java进程的堆内存结构、变化趋势以及垃圾回收时间的变化趋势。
发现问题 - Prometheus + Grafana
- Prometheus用来采集系统或者应用的相关数据,同时具备告警功能;
- Grafana可以将Prometheus采集到的数据以可视化的方式进行展示。
解决GC问题的手段
- 优化基础JVM参数;
- 减少对象产生;
- 更换垃圾回收器;
- 优化垃圾回收器参数。
4 案例实战
略
5 总结
GC调优的核心流程:
- 监控是否出现连续的FULL GC或者单次GC时间过长;
- 诊断并解决,一般通过四种途径解决:
-
- 优化基础JVM参数;
- 减少对象的产生;
- 更换垃圾回收器;
- 优化垃圾回收参数;
3.在测试环境验证问题是否已经解决,最后发布上线。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?