今天突然想到一些问题,关于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也在栈上,没道理啊.