Object[] a = new Object[5]
根据上面的代码:
    我已经初始化了a数组的空间,到底JVM怎么分配空间给数组a? 分配了多少?还是并没有在堆空间分配,只是分配出栈空间地址而已(保存堆地址)?

解决方案 »

  1.   

    https://blog.csdn.net/znmdwzy/article/details/81274821
      

  2.   


    他讲的是基本变量数组,基本变量数组已经固定占用堆空间大小了,所以它  int[] a = new int[3] 已经在堆空间分配了内存数组在我理解下连续的,每个大小相等的小堆块,组成一个数组堆块
    可是在Object数组不同,它是什么类型的对象都能存进去,每个对象需要的堆空间好像又不一样,这不是打破了 “大小相等”堆块吗?而且栈空间只是保存数组的首地址,它又是怎么检索出数组内每个元素占用的堆空间呢!。