[关闭]
@boothsun 2018-03-29T19:52:33.000000Z 字数 783 阅读 1779

JVM常见故障排查

JVM


频繁Full GC

参考优秀博文:
1. 线上FullGC频繁的排查
2. 系统频繁Full gc问题分析及解决办法
3. 记一次通过Memory Analyzer分析内存泄漏的解决过程

频繁Full GC的最常见就是大对象没有释放,或者内存泄漏。比如一个List里放了非常多的对象,

1. Full GC的原因

我们知道Full GC的触发条件大致情况有以下几种:

2. DUMP堆栈信息 查找大对象

  1. 可以先使用jmap命令打印出当前系统内存镜像,然后使用专业工具比如Eclipse Memory Analyzer或者jvisualvm来对Dump文件进行分析。 常用jmap命令如下:

    • jmap -histo[:live] <pid> 通过histo选项,打印当前Java堆中各个对象的数量、大小。如果添加了live,只会打印活跃的对象。
    • jmap -dump[:live,]format=b,file=<filename> <pid> 通过-dump选项,把Java堆中的对象dump到本地文件,然后使用MAT进行分析。如果添加了live选项,只会dump活跃的对象。
    • jmap -heap <pid> 通过-heap选项,打印Java堆的配置信息和使用情况,还有使用的GC算法。
  2. 在集群中的某台机器上开启XX:HeapDumpBeforeFullGC,让JVM在每次FULL GC前 产生Heap DUMP文件,然后通过文件来对内存情况进行分析。

  3. 使用专业的MAT对DUMP文件进行分析:
    image.png-76.3kB
    image.png-130.2kB

CPU 利用率非常高

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注