0%

一个JVM进程卡住问题

一、现象描述

一个JVM进程运行一段时间后,应用线程卡住不能继续正常运行。

二、排查复盘

排查过程复盘:
0. 执行jstat命令,发现进程持续进行“Full GC”,导致应用线程卡住
0. 分别执行jmapjstack命令,dump堆内存快照和线程快照
0. 使用Memory Analyzer解析堆内存快照,发现所有应用线程几乎耗尽所有堆内存,结合线程快照,发现这些应用线程都处于正常工作路径,且都处于“RUNNABLE”的线程状态
0. 根据上一点发现可知,该进程正常运行的确需要更多堆内存(不存在“内存泄漏”,“垃圾回收策略可改进”等可能),加大堆内存,进程正常运行,问题不再重现


图1 Memory Analyzer解析堆内存快照结果(由于截图所限,只是部分应用线程)

图2 线程快照内相应线程信息(以“pool-1-thread-1”应用线程为例)

您的支持将鼓励我继续分享!