gpt4 book ai didi

java - Java 对象数组创建后的内存大小是多少?

转载 作者:行者123 更新时间:2023-12-03 03:58:07 26 4
gpt4 key购买 nike

这可能甚至不需要询问,但我想确保我在这一点上是正确的。当您在 Java 中创建任何对象的数组时,如下所示:

Object[] objArr = new Object[10];

变量objArr位于栈内存中,它指向堆中数组对象所在的位置。堆中该数组的大小等于 12 字节对象头 + 4(或 8,取决于引用大小)字节 * 数组中的条目数。这准确吗?

那么我的问题如下。由于上面的数组是空的,那么执行完该行代码后,它是否立即在堆中占用了 12 + 4*10 = 52 字节的内存?或者 JVM 是否会等到您开始将数据放入数组后才实例化它?数组中的空引用是否占用空间?

最佳答案

空引用确实“占用空间”——数组的内存预先分配在一个 block 中,并归零(以使所有内容为空引用)。作为练习,尝试分配一个巨大的数组,该数组将占用比 JVM 内存限制更多的空间。程序应立即终止并出现内存不足错误。

关于java - Java 对象数组创建后的内存大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31108523/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com