计算Java中对象的大小
我想记录一个对象占用一个项目的内存量(以字节为单位)(我正在比较数据结构的大小),并且似乎没有方法可以在Java中完成。据说C / C ++有sizeOf()
方法,但这在Java中不存在。我尝试Runtime.getRuntime().freeMemory()
在创建对象之前和之后记录JVM中的可用内存,然后记录差异,但是无论结构中元素的数量如何,它只会给出0或131304,并且两者之间什么都没有。请帮助!
回答:
你可以使用该java.lang.instrumentation
软件包:
http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/Instrumentation.html
它具有一种方法,可用于获取特定于实现的对象大小的近似值以及与对象相关的开销。
Sergey链接的答案有一个很好的例子,我将在这里重新发布,但是你应该已经从他的评论中进行了研究:
import java.lang.instrument.Instrumentation;public class ObjectSizeFetcher {
private static Instrumentation instrumentation;
public static void premain(String args, Instrumentation inst) {
instrumentation = inst;
}
public static long getObjectSize(Object o) {
return instrumentation.getObjectSize(o);
}
}
使用getObjectSize:
public class C { private int x;
private int y;
public static void main(String [] args) {
System.out.println(ObjectSizeFetcher.getObjectSize(new C()));
}
}
以上是 计算Java中对象的大小 的全部内容, 来源链接: utcz.com/qa/420751.html