问题1:java中的引用类型的对象存放在哪里
根据上下文来确定。
比如
void func() { Object obj = new Object();//这个obj在函数的栈里。 } class Test { private Object obj = new Object();//这个obj随对应的Test对象分配在堆里 }
对于方法中的局部变量的引用时存放在java运行时数据区的栈中,对于实例变量则是存放在java运行时数据区的堆中。
问题2:new一个Object对象到底占用多少内存呢( Object obj = new Object() )?
如果JDK64位,8字节是引用,16字节是堆内存(对象头大小),总共是8+16=24字节,所以new一个Object对象占用8+16=24字节。
如果JDK是32位,按如上分析方法可知new一个Object对象占用4+8=12字节