计算Java中任何对象的总内存使用量[重复]

Posted

技术标签:

【中文标题】计算Java中任何对象的总内存使用量[重复]【英文标题】:Calculate total memory usage of any object in Java [duplicate] 【发布时间】:2013-03-31 10:31:59 【问题描述】:

我正在使用 jProfiler。我有一个 X 类的对象。这个类有许多 String、Integer 和其他类类型的属性。我想知道 X 类的单个对象消耗了多少内存。

当我使用 jProfile 查找内存使用情况时,我只得到 X 类型对象的大小。我假设 jProfiler 没有显示其成员变量使用的内存。例如,X 类的 String 属性对 String 使用的总内存有贡献。

我想计算类 X 的总内存使用量,包括其所有属性对象使用的内存。有关如何使用 jProfile 或其他工具/代码实现这一目标的任何信息?

提前致谢!

【问题讨论】:

看不出这是一个重复的问题,这是关于如何使用完全有能力这样做的 JProfiler 来做到这一点。在堆遍历器中,使用所选对象创建一个对象集,然后单击标题中的“计算保留和深度大小”。深尺寸是您正在寻找的。保留大小直接显示在引用视图中,但它们仅显示如果要删除此对象将释放多少内存。 【参考方案1】:

看看这个http://www.javamex.com/tutorials/memory/object_memory_usage.shtml。它包含有关如何计算 Java 对象内存使用量的信息以及对计算它的工具的引用。

【讨论】:

【参考方案2】:

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

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

它不仅会显示它自己使用的内存,还会显示由于它拥有的引用而保持活跃的内存量。

【讨论】:

感谢您的回答。我尝试将它与 Eclipse 集成并获取堆转储..但失败了。你能告诉我如何使用这个工具吗?谢谢 这是一个独立的工具。只需下载并自行运行即可。您不会将它作为 Eclipse 的插件或插件运行。运行它并在其中打开一个头转储文件 我相信他们的文档比我放在这里的任何东西都更彻底:wiki.eclipse.org/index.php/MemoryAnalyzer

以上是关于计算Java中任何对象的总内存使用量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使垃圾收集器更快地放弃[重复]

如何计算Java对象所占内存的大小

如何在 C++ 中获取 OpenGL 使用的总内存(以字节为单位)?

Java内存管理——垃圾收集

如何检查java中对象的内存使用情况[重复]

Python脚本知道它使用了多少内存[重复]