java 实例变量的位置?
今天突然想到一些问题,关于java内存分配的问题,基本类型在栈上分配。new出来的对象引用分配在栈上,对象分配在堆上,一直以来都是记住了,从来没仔细思考过,在栈上到底怎么分配,在堆上到底具体怎么分配的。举个例子:Java代码
class Test{
int number1=9;
Test t1=new Test();
public static void main(String args[]){
int number2=9;
Test t2=new Test();
}
}
number2 在栈上,t2这个对象的引用”也在栈上,t2引用的对象在堆中,那t1这个对象的引用 是实例变量 它在堆中么?
number1 冒似也是在栈上,没道理啊 栈是线程私有的,当前线程运行的方法才会在上面开出一个栈帧,方法局部变量在这个栈帧的局部变量表中,那如果Test这个类中的类实例变量number1也在栈上,没道理啊. --------------------编程问答-------------------- 这类问题经常有啊,建议楼主看看这个帖子吧:
http://topic.csdn.net/u/20120207/00/f7d2700b-d2bd-443a-8d12-80f3cd857522.html --------------------编程问答-------------------- 看了楼上的帖子,很好啊
补充:Java , Java EE