问题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字节