在Java中计算任何对象的总内存使用量

3
我正在使用jProfiler。我有一个类X的对象。这个类有许多类型为String、Integer和其他类类型的属性。我想知道一个类X的单个对象消耗了多少内存。
当我使用jProfile查找内存使用情况时,我只得到了一个类型为X的对象大小。我认为,jProfiler没有显示其成员变量使用的内存。例如,类X的一个String属性对String使用的总内存做出了贡献。
我想找出类X的总内存使用情况,包括所有属性对象使用的内存。有关如何使用jProfile或其他工具/代码实现此目标的任何信息?
提前感谢!

2
不明白为什么这是一个重复的问题,这个问题是关于如何使用JProfiler来完成的,而JProfiler完全有能力做到。在堆行走器中,创建一个包含所选对象的对象集,并在标题栏中点击“计算保留和深度大小”。深度大小就是你要找的。保留大小直接显示在引用视图中,但它们只显示如果删除该对象将释放多少内存。 - Ingo Kegel
2个回答

2

请看这个链接,它包含了如何计算Java对象内存使用的信息,以及用于计算的工具的引用。


2

这是一个非常好用的工具,可以显示对象使用的总内存。

http://www.eclipse.org/mat/

它不仅会显示对象本身使用的内存,还会显示由于引用而保持活动状态的内存量。


谢谢您的回答。我尝试将它与Eclipse集成并获取堆转储,但失败了。您能告诉我如何使用这个工具吗?谢谢。 - King J
这是一个独立的工具。只需下载并单独运行它。您不需要将其作为Eclipse的插件或附加组件运行。运行它并在其中打开头转储文件。 - EdH
我相信他们的文档比我在这里放的任何东西都更全面:http://wiki.eclipse.org/index.php/MemoryAnalyzer - EdH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接