比如new person(12);person有个int 属性 age;这时候这个person按说是放在堆中的,那么,这个age是放在哪呢?

解决方案 »

  1.   

    从Person类定义来看,Person对象包括了一个属性age,而属性是需要内存来存储的,Person对象由多块内存来组成,不同的内存块存储了Person对象的不同属性。
    换句话说,在你创造Person对象的时候堆空间会分配一块内存,而这一块内存又由多块小内存组成,Person对象的不同属性就被存储在这些不同的小内存块中。
      

  2.   

    JVM中,  所有对象都是在堆中分配内存空间的,
    栈只用于保存局部变量和临时变量,如果是对象,只保存引用,实际内存还是在堆中;一个java对象占用的内存空间,除了一个固定大小的空间用于描述这个对象属于哪个类,其它的就用于保存它的字段的值;
      

  3.   

    new出来的 不管什么 都放在对中。你可以把new出来的对象想象成堆里的一个大房子,而age呢,就住在那个大房子里。
      

  4.   

    age是person的一部分,应该放哪里?人在屋里,那这个人的胳膊在哪里?一般说对象是分配在堆里的,不过对jvm而言,由于可能使用标量替换之类的优化技术,可能根本不会在堆中创建对象。
      

  5.   

    如果想知道 去看看 深入JAVA虚拟机
      

  6.   

    应该是堆吧只有基本数据类型才放在栈里的,比如int double
      

  7.   

    new 出来的对象都是放在堆中的
      

  8.   

    new 出来的是放在堆里的。
      

  9.   

    是这样的,举个例子吧,  String  myString = new  String() ;
    myString放在堆里面 ,而实际的开辟的变量的空间放在栈里面
      

  10.   

    当然是堆里面咯~ 你这个int类型是一个成员变量,他是属于你这个new出来的对象中的一个成员。
    而你的对象在堆区,成员变量便在你这个对象所在的那块内存区域里面!
     
      

  11.   

    我也是初学的,我学的时候关于内存方面很迷惑,后来看了尚学堂的JAVA视频,就明白了,建议你看看
      

  12.   

    age这个属性放在堆中,在栈中会存放你这个person对象的引用,该引用使用一个指针从栈内存中指向堆内存。
      

  13.   

    如果属性不是static的,
    Person per=new Person(12);per在栈中,new Person(12)在堆中,new Person(12)的地址赋给per,per指向new Person(12),而age属性也在new Person(12)所对应的堆内存中
    如果属性是static的,
    Person per=new Person(12);per在栈中,new Person(12)在堆中,new Person(12)的地址赋给per,per指向new Person(12),但age属性是static的存放在datasegment数据区这个内存区,所有的对象共用static属性
      

  14.   

    new出来的应该是在堆中,前几天看书看到的
      

  15.   

    new Person(); 
    new出来的对象放在堆里的,堆里一块内存存放该对象。该块内存又分为一块块存放该对象的所有属性,不管是引用型的还是基本类型。所以 int age  是在堆中的