我们怎样才能找出java对象的大小?
例:
class Person{
String name;
int age;
public Person(String n, int a){
name = n;
age = a;
}
}
Person person = new Person("Andy", 30);
Run Code Online (Sandbox Code Playgroud)
现在怎样才能知道人物对象的大小?
谢谢
这个问题没有意义,至少没有进一步的背景.
Java中"大小"的概念只能在原语中得到合理定义:一个字节是8位(不足为奇)一个int是32位,一个long64位等等(参见http://download.oracle.com/javase/tutorial) /java/nutsandbolts/datatypes.html获取完整列表).
对于对象实例,它更复杂,因为:
java.lang.String,请参阅http://en.wikipedia.org/wiki/String_interning).因此,如果使用大小为y的x对象,则总大小可能小于x*y也许您可以解释为什么您对对象大小感兴趣.
估计实例使用的堆内存有一些经验法则(例如,在Sun JVM中,java.lang.Object实例使用8个字节),但这些将取决于您使用的JVM.
通常,如果您想了解堆使用情况,请使用内存/堆分析器.
编辑:
好吧,(从JDK 6开始)有一种方法来获得对象使用的内存量的近似值:http://download.oracle.com/javase/6/docs/api/java/lang/instrument/ Instrumentation.html#getObjectSize%28java.lang.Object 29%
它仍然只是近似...