分析大型 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 桌面应用程序的内存分析 [关闭]