# 官方提供@yunTaoScripts 容器JVM内存高排查思路 🔥🔥

👉🏻 Java性能问题定位参考链接 (opens new window)

# 故障一、频繁FullGC的排查方法:

  • 发生FGC有可能是内存分配不合理,比如Eden区太小,导致对象频繁进入老年代,这时候通过启动参数配置就能看出来,
  • 另外有可能就是存在内存泄露,可以通过以下的步骤进行排查:
    1. jstat -gcutil 1 1000 或者 查看gc.log日志,查看内存回收情况。​
    2. 容器运维中心>数据分析>指标浏览查看 jvm 波动趋势。大致确认下内存走势,如果呈现高低震荡,而不是高位波动,大概率jvm没什么问题。如果内存呈现 明显向上趋势,则继续排查。
    3. 通过jmap命令jmap -dump:format=b,file=dumpfile pid,导出之后再通过Eclipse Memory Analyzer等工具进行分析,定位到代码,检查是否存在内存溢出问题​。

# 故障二、CPU飙高,同时FGC的排查方法:

  1. 找到当前进程的pid,top -p pid -H 查看资源占用,找到线程
  2. printf “%x\n” pid,把线程pid转为16进制,比如0x32d
  3. jstack pid|grep -A 10 0x32d查看线程的堆栈日志,还找不到问题继续
  4. dump 出内存文件用MAT等工具进行分析,定位到代码,修复
最后修改时间: 1/19/2023, 4:09:02 PM