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.在测试环境验证问题是否已经解决,最后发布上线。
标签:实战篇,回收,吞吐量,调优,GC,垃圾,JVM From: https://www.cnblogs.com/daytoy105/p/17934537.html