JVM问题分析调优经验

2023-03-10 08:50:04 浏览数 (1)

一、前言

JVM 性能优化步骤:

  1. 预估系统参数
  2. 压测后,调整 JVM 参数
  3. 线上系统监控和优化
  4. 统一的 JVM 参数模板 线上频繁 Full GC 的表现:
  • 机器 CPU 负载过高
  • 频繁 Full GC 报警
  • 系统无法处理请求或者处理过慢

频繁 Full GC 常见原因:

  1. 对象频繁进入老年代,频繁触发 Full GC系统承载高并发请求,或处理数据量过大,导致 Young GC 频繁,每次 Young GC 过后存活对象太多,内存分配不合理,Survivor 区域过小。
  2. 系统一次性加载过多数据进入内存,大对象直接入老年代,频繁触发 Full GC
  3. 内存泄漏,对象无法回收,一直占用在老年代里,频繁触发 Full GC
  4. MetaSpace (元空间)加载类过多,触发 Full GC
  5. 代码中使用 System.gc(),触发 Full GC

针对以上 Full GC 常见的原因,对应的优化方式:

  1. jstat 分析,合理分配内存,调大 Survivor 区域
  2. dump 出内存快照,用 MAT 工具进行分析,代码上排查
  3. 若内存使用不多,还频繁触发 Full GC,那么优化加载的类
  4. 若内存使用不多,还频繁触发 Full GC
jvm

0 人点赞