所以我正在开发一个 Java 程序,它将每秒多次更新 2D 数组。最初,我使用 System.arrayCopy() 复制整个数组,但这显然是一个坏主意,因为我一次只更新一行。相反,我决定只使用一个指向数组的虚拟“零”的“指针”。不管怎样,我也希望能够支持动态调整大小,我想到最简单的方法可能是让一个数组保持相同的大小,然后有一个数字来指示虚拟的最大长度大批。我发现自己认为这可能是浪费内存
以上信息只是为了让有人可以告诉我我是否在做一些完全荒谬的事情。
TL;DR = 如果我执行以下操作...
int[][] data = new int[2000][]; // 2000 would be the max
for(int i=0; i<10; i++) {
data[i] = new int[10];
}
...除了我实际初始化的一百个整数之外,我还使用了多少内存?每个空引用只是 4 个字节吗?
最佳答案
每个 null
引用占 4 个字节,加上 header 的 8-16 个字节。大多数 64 位 JVM 使用 32 位引用,堆大小最多约为 30 GB。
关于java - 如果我从不实例化某些子数组,则会为二维数组分配多少空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12060305/