我被指派在我们的正式生产环境中找到完全GC问题(垃圾收集器)的根本原因。它是随机发生的,我相信最有可能的情况是当前应用程序中存在的内存泄漏。我希望从我们的正式生产环境(linux)中获取内存转储并使用GUI工具(如Eclipse Memory Analyzer)进行分析。
要分析的堆转储文件的最佳文件格式是什么?是hprof格式吗?我准备使用jmap命令来获取堆转储。在获取内存转储的同时是否有必要指定“format=b”选项?
以下是我将指示我们的支持团队运行的示例命令。(5980是一个示例pid)。
如果你相信任何更好的方法,请告诉我。
jmap -dump:format=b,file=hpdump.hprof 5980
谢啦
该命令似乎没问题。是的,很少有其他工具可用于分析堆转储。请参考这个
在正式生产环境中,我无法将堆转储文件作为空间限制。分析直方图文件也让我无处可去。相反,我能够找到GC日志分析器工具,IBMGCMV,它有助于分析一年中某些确定日子的GC日志,从而导致GC问题。
GC日志的绘图揭示了整个故事。在每种情况下都可以观察到内存消耗的急剧上升,从某个事件开始,只需要不到10分钟就可以达到最大内存。我计算了初始上升点的时间戳,并与服务器日志中相应的时间戳进行了比较。这为上升开始时经常出现在服务器日志中的少数特定进程提供了强有力的证据。