当前位置: 首页 > 知识库问答 >
问题:

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

方绪
2023-03-14

我有一个非常奇怪的问题。我有一个30 GB的堆转储,我想在我的笔记本电脑上分析相同的(它有8 GB的内存)。我试着用MAT和IBM堆分析器这样做,但是根据他们的建议,Xmx大小应该超过转储大小。我也试着用MAT的heapDumpParser.bat文件分析堆转储,但是收到内存错误。

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

提前谢谢!

共有1个答案

南宫俊逸
2023-03-14

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

如果找不到足够大的机器来运行以处理转储,可以尝试使用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

 类似资料:
  • 问题内容: 我有一个HotSpot JVM堆转储,我想分析一下。VM运行时带有,堆转储文件的大小为48 GB。 我什至不会尝试,因为它需要大约五倍的堆内存(在我的情况下为240 GB),而且速度非常慢。 在分析了几个小时的堆转储后,Eclipse MAT崩溃了。 还有哪些其他工具可用于该任务?最好使用一套命令行工具,其中包括一个程序,该程序将堆转储转换为有效的数据结构以进行分析,再结合使用其他几个

  • 我正在经历内存泄漏,这里有一些细节。 在泄漏后, null null 我很惊讶顶部、堆转储大小和实际堆大小之间的差异。我猜测top和heap之间的区别是垃圾收集器堆和本地堆区域的可能性。但是,为什么堆转储文件大小和实际堆大小(来自eclipse MAT analyzer)会不同呢? 对这个问题有什么见解吗? 更新/回答 一些建议是使用jcmd(https://docs.oracle.com/jav

  • 问题内容: 我必须在Java应用程序中找到内存泄漏。我对此有一些经验,但希望就此方法论/战略提出建议。欢迎任何参考和建议。 关于我们的情况: 堆转储大于1 GB 我们有5次堆放场。 我们没有任何测试案例可以激发这一点。仅在使用至少一个星期后,它才会在(大规模)系统测试环境中发生。 该系统建立在内部开发的传统框架上,该框架具有许多设计缺陷,以至于无法将它们全部计算在内。 没有人深入了解该框架。它已被

  • 我已经用工具从运行了几天的Java应用程序中生成了一个堆转储文件,这将导致一个很大的二进制堆转储文件。 我如何在IntellIJ IDEA中对这个堆转储执行内存分析? 我知道有一些用于Eclipse和Netbeans的工具,但如果可能的话,我更愿意使用IDEA。 分析的基本结果将告诉我每个对象在内存中的实例数(每个类),以便我能够开始调试内存泄漏。

  • 我试图分析我的Java applet的堆转储,它耗尽了堆空间,即使我增加堆大小,如本文所示。applet:Java堆空间 今天上午我做了一些堆转储(是的...它可能做数字转储),我试图用MAT和Visual VM1.3.5来分析它们。运行泄漏测试后,主要的怀疑对象是org.eclipse.jdt.internal.core.javaModelManager和org.eclipse.jst.jee.

  • 我并不了解Java特别是Java调试,但在Jenkins中使用Monitoring进行堆转储,然后在Eclipse中使用MAT对其进行解码,显示总内存使用量为169.4MB,而在Jenkins中Monitoring似乎经常使用内存,GCs也经常运行。-XMX是4G。 为什么我只有169.4MB的mat?可能是因为在进行转储之前,Jenkins执行了GC吗?如果是,我是否可以避免它以看到完整的内存转