A. java的方法中new的对象存储在内存中那个区域
这个对象存在堆中,还是栈中?
答:堆,new一个对象,一定是在堆中
方法内部new出来的对象,在哪里存着?
答:堆,new出来对象的实例变量都存在堆上面。
栈,这个东西,需要理解为:线程运行时,才会创建,执行完,就没了。
Person p = new Person();
上面这段代码,在执行时,p压入栈,通过局部变量表,找到对应的【实例数据】,执行完毕后释放。
B. new一个java对象的时候,内存是怎么分配的
以 Object obj = new Object();为例
obj 保存在虚拟机栈内存,是个地址. new Object();的内容保存在堆内存, new关键字代表的就是在堆内存开辟空间
C. java 中new一个对象占多少内存
Object
o=new
Object():
在java中空对象占八个字节,对象的引用占四个字节。所以上面那条语句所占的空间是4byte+8byte=12byte.java中的内存是以8的倍数来分配的,所以分配的内存是16byte.
举个例子:
Class
O{
int
i;
byte
j;
String
s;
}
其所占内存的大小是空对象(8)+int(4)+byte(1)+String引用(4)=17byte,因要是8的整数倍,所以其占大小为24byte.
当然,如果类里有其他对象的话,也要把其他对象的空间算进去。
其实这个在javaeye的电子期刊上有。