1

我正在尝试分析我的 Java 小程序的堆转储,即使我增加了堆大小,如本文所示。小程序:Java 堆空间

现在我今天早上做了一些堆转储(是的..它可以进行数字转储),我试图用 MAT 和 Visual VM 1.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 比视觉 VM 更好。从早上开始,我一直在进行转储(再次......数字转储)并使用这两种工具分析它们。虽然 VVM 在其泄漏嫌疑报告中显示 org.eclipse.jdt.internal.core.JavaModelManager 和 org.eclipse.jst.jee.archive.internal.ArchiveImpl 作为嫌疑人,但 Eclipse 内存分析器 (MAT) 显示我的摇摆应用程序正在文件夹中图像的缩略图(每个图像大约 100kb)并将它们显示为 JToggleButton。但是一旦添加了缩略图,JtoggleButton 的大小为 6MB。因此,如果文件夹中有 100 张图像,则图像的缩略图至少为 600MB。除此之外,我还需要用这个程序做其他事情。在这种情况下,MAT 有助于识别占用最多堆空间的确切对象。

谢谢DJ。

4

1 回答 1

1

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

摆动小程序.. jtogglebutton 大小为 6mb。我怎样才能减小尺寸

于 2013-02-07T14:22:28.573 回答