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

扫描器程序OutOfMemoryError&使用内存分析器进行Java堆转储分析

慕胡媚
2023-03-14

我试图分析我的Java applet的堆转储,它耗尽了堆空间,即使我增加堆大小,如本文所示。applet:Java堆空间

今天上午我做了一些堆转储(是的...它可能做数字转储),我试图用MAT和Visual VM1.3.5来分析它们。运行泄漏测试后,主要的怀疑对象是org.eclipse.jdt.internal.core.javaModelManager和org.eclipse.jst.jee.archive.internal.archiveImpl。我在代码中没有使用过这些。

Visual Vm显示最高的空间由byte[]、int[]、char[]、java.lang.String和short[]类占用。我没有在我的程序中使用太多这些。我应该如何理解这个垃圾场,我的下一步应该是什么?如果需要,我可以贴一份垃圾邮件的副本。

更新:在我的例子中,MAT比visual VM更好。从早上开始,我一直在进行转储(还是...数字转储),并用这两种工具进行分析。虽然VVM在其泄漏嫌疑人报告中将org.Eclipse.jdt.internal.core.javaModelManager和org.Eclipse.html" target="_blank">jst.jee.archive.internal.archiveImpl显示为嫌疑人,但Eclipse memory analuzer(MAT)显示我的swing应用程序正在制作文件夹中图像的缩略图(每个图像大约为100KB)并将其显示为JToggleButton。但是一旦添加了缩略图,JtoggleButton的大小为6MB。因此,如果一个文件夹中有100个图像,则图像的缩略图至少为600MB。除此之外,我还需要用这个程序做一些其他的事情…在这种情况下,MAT帮助确定了占用最多堆空间的确切对象。

谢谢DJ。

共有1个答案

居京
2023-03-14

1)我在运行程序的不同时刻使用Jconsole创建了堆转储,2)将它们导入内存分析器3)运行了一个泄漏可疑报告4)观察了最大实例的大小和数量。这向我展示了问题,我正在尝试解决它,但我不知道如何解决。不过,至少很高兴我发现了MAT和它在我的情况下肯定比VM更有帮助。希望它能帮助其他人。下面是我下一个问题的链接。

swing小程序..jtogglebutton大小为6MB。我怎样才能缩小尺寸

 类似资料:
  • 我有一个非常奇怪的问题。我有一个30 GB的堆转储,我想在我的笔记本电脑上分析相同的(它有8 GB的内存)。我试着用MAT和IBM堆分析器这样做,但是根据他们的建议,Xmx大小应该超过转储大小。我也试着用MAT的文件分析堆转储,但是收到内存错误。 关于如何成功分析笔记本电脑上的垃圾,有什么建议吗? 提前谢谢!

  • 我正在开发 spark 1.3,我的应用程序是一个 spark 流应用程序。我使用纱线作为资源经理。我的应用程序运行正常几天,然后 spark 作业定期丢失执行程序。当我查看node_manager日志时,我发现了一个异常: 我对这一例外的问题如下: > 我知道11G会运行执行程序的内存。但是我在spark-defaults.conf.中将10G设置为执行程序内存。那么11G是如何分配给执行程序的

  • 我试图调查这是在部署在Tomcat中的web应用程序负载较高时发生的。堆大小设置为8GB() 在某个时间点,由于GC activity开销,我们应用程序变得没有响应。我可以在日志中看到完整的GC连续发生多次。因此,我使用以下命令()进行堆转储。包含转储的文件大小为9GB。转储后(应用程序被冻结约45分钟),发生多个完整GC直到抛出。 下面是GC activity的日志示例 为了分析堆转储,我在ec

  • 问题内容: 我正在用Java 7中的转义分析进行一些测试,以便更好地了解哪些对象可以进行堆栈分配。 这是我编写的用于测试堆栈分配的代码: 这是它在Linux上与Java 7一起输出的结果 我正在使用GC日志来了解是否在堆栈上分配了对象,这可能不是100%可靠的,但似乎给出了很好的提示。 基于输出,堆栈分配适用于test1,test3,test4和test6,不适用于test2和test5。我不明白

  • 问题内容: 我只是在一本Java书中读到这句话,说Java中的对象驻留在堆上。使用堆是因为它是快速存储数据和快速检索数据的最佳方法吗? 我只有一个关于数据结构初学者的想法。我的意思是为什么不堆叠或其他? 问题答案: 堆栈的问题是您只能删除最近添加的内容。这对于局部变量非常有效,因为它们在您进入和退出函数时会来来去去,但对于生命周期不遵循单个函数的任意数据而言,效果则不太好。内存堆使您可以随意添加和