java对象在内存中存储的问题。

请问java中new一个对象后,它的那些成员函数以及属性在内存中怎样存储的,比如堆,栈,还有一些常量存储区域,静态方法以及静态属性等等,求热心高手。

栈里面就是放new出的对象的地址以及放那几个基本类型。堆里面就是放的你new出来的对象。另外还有个数据池,里面放的就是你弄出来的字符串,一个字符串只存在于内存中一份,就是搁在这池子里的。就比如你弄个String str1="abc";String str2="abc"; str1==str2;是TRUE
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-17
new出来的对象只有在执行时,会开辟一块内存存储属性!静态的方法,属性,变量,在程序加载的时候就会事先开辟一块区域存储。堆栈主要是用于程序的递归等
第2个回答  推荐于2016-02-19
stack 区存放函数参数和局部变量;
heap 区存放对象;
data 区存放static 的变量或者字符串常量;
code 区存放类中的方法;追问

请写详细点儿,小白在此谢过了。

追答

stack 栈 -->放方法的参数 和局部变量.就像这样
-----------
void test(String[] args){
int xx = 0;// args和 xx在jvm load class时存放在栈中

}

heap 堆 --> 堆要比栈要大得多. 当一个对象对new出来时,该对象放在heap中,对象引用放在栈中.

data区,也就是数据区 -->静态的变量 和 string的常量.

code 代码区 --->classloader类加载器加载该class时存放类中的方法.

本回答被提问者和网友采纳
相似回答