有没有一种简单的方法来获取java对象的大小?

Ada*_*Lee 10 java

我想知道检索java对象大小的任何简单方法吗?另外,无论如何要在c ++中获得像sizeof运算符这样的类的大小?

anu*_*ava 16

有一个opensource java.SizeOf项目,它确定内存中任何Java对象的大小.


Ste*_*n C 7

仪表接口具有getObjectSize()方法.

但是,这只会给出对象本身的大小,而不是它的组件子对象.因此,例如,它会告诉您所有String对象的大小相同.

另一个问题是物体的大小实际上可以自发地改变.例如,如果您获得对象的标识哈希码并且它在GC周期中存活,则其大小将增加(至少)4个字节以存储标识哈希码值.


找到"对象"大小的问题在于,通用实用程序类/方法不可能确定任意对象的抽象边界在哪里.有一些问题甚至像String类一样简单.(考虑使用substring(...)Java 6 创建的String对象.您是否可以将char[] value对象作为this原始String 的一部分或一部分,或两者兼而有之?这对于各个对象的大小意味着什么?)

因此,不可避免的是,诸如net.sourceforge.sizeof无法完全准确地计算空间使用情况.