分析大型 Java 堆转储 - 内存错误

Posted

技术标签:

【中文标题】分析大型 Java 堆转储 - 内存错误【英文标题】:Analysing large Java heap dumps - memory error 【发布时间】:2016-02-12 12:05:33 【问题描述】:

我有一个非常特殊的问题。我有一个 30 GB 的堆转储,我想在我的笔记本电脑(有 8 GB 的 RAM)上分析它。我尝试使用 MAT 和 IBM Heap 分析器来执行此操作,但根据他们的建议,Xmx 大小应该大于转储大小。我还尝试使用 MAT 的 heapDumpParser.bat 文件分析堆转储,但收到内存错误。

关于如何成功分析笔记本电脑上的转储有什么建议吗?

提前致谢!

【问题讨论】:

我不确定它是否真的适合你,因为我没有使用过这么大的文件,但仍然尝试 YourKit profiler。 谢谢,但我在使用 yourKit profiler 时遇到了同样的问题。系统在解析 35% 后挂起(内存和 CPU 利用率很高)。 【参考方案1】:

Memory Analyzer 可能是分析内存不足问题的最佳工具,但它确实需要大量内存。

如果您找不到足够大的机器来处理您的转储,您可以尝试使用 IBM SDK 附带的 jdmpview 命令行工具来执行一些基本调查。

它最适合在内存不足而不是 phd 文件中生成的核心转储,因为它不需要将内容加载到内存中。

在jre/bin中可以找到,需要运行:

jdmpview -core core_file_name

你应该从运行命令开始:

info class

因为这将生成对象类型、实例计数和大小的基本列表。

这里有完整的文档: http://www-01.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.win.80.doc/diag/tools/dump_viewer_dtfjview/dump_viewer.html

【讨论】:

以上是关于分析大型 Java 堆转储 - 内存错误的主要内容,如果未能解决你的问题,请参考以下文章

用于分析大型 Java 堆转储的工具

在大型 Java 堆转储中查找内存泄漏的方法

打开堆转储时出错

比较 Java 内存堆转储:Java 桌面应用程序的内存分析 [关闭]

ConnectionQueueStatsProvider 出现内存不足错误

创建和分析 Java 堆转储(Heap Dumps)