作者:所谓-旧 | 来源:互联网 | 2023-06-13 13:25
这可能甚至不需要询问,但我想确保我是对的.在Java中创建任何对象的数组时,如下所示:Object[]objArrnewObject[10];变量objArr位于堆栈内存中,它指向
这可能甚至不需要询问,但我想确保我是对的.在Java中创建任何对象的数组时,如下所示:
Object[] objArr = new Object[10];
变量objArr位于堆栈内存中,它指向堆中数组对象所在的位置.堆中该数组的大小等于12字节对象头4(或8,取决于引用大小)bytes *数组中的条目数.这准确吗?
那么,我的问题如下.由于上面的数组是空的,在执行该行代码后,它是否会在堆中占用12 4 * 10 = 52字节的内存?或者JVM是否会等到你在实例化之前开始将数据放入数组中?数组中的空引用是否占用空间?
解决方法:
空引用“占用空间” – 数组的内存在一个块中预先分配,并归零(使所有内容为空引用).作为练习,尝试分配一个巨大的数组,一个比JVM的内存限制占用更多空间的数组.程序应立即因内存不足错误而终止.