gpt4 book ai didi

Java内存不足的二维数组

转载 作者:行者123 更新时间:2023-12-04 05:13:10 24 4
gpt4 key购买 nike

我正在尝试创建一个二维数组,如下所示。

int NUM_RECORDS = 100480507;

byte[][] completeArray = new byte[NUM_RECORDS][6];

拥有 100480507 * 6 ~= 0.6 GB 应该还不够吗?

this问题。

但是创建这个数组会耗尽内存。我已经通过 JVM args 为我的 java 进程分配了 4G。

这怎么解释?我在这里错过了一些微不足道的东西吗?

这是我的程序
public class MemTest {

public static void main(String[] args) {
int NUM_RECORDS = 100480507;
byte[][] completeArray = new byte[NUM_RECORDS][6];
System.out.println("Array created");
}
}

最佳答案

每个数组都有一个开销(例如,请参阅有关其开销的 IBM 文档 -> http://www.ibm.com/developerworks/java/library/j-codetoheap/index.html )。在您的情况下,您正在创建 100480507 个!

如果您将代码更改为“ byte[] completeArray = new byte[ NUM_RECORDS*6 ];”,根据您的理论,它应该需要相同的空间!但是,我相当肯定这会起作用,因为开销最少。你也可以试试 "byte[][] completeArray = new byte[6][NUM_RECORDS] ;"这也应该有效(较少的开销)。

我知道这不会解决您的问题 - 但我希望这能让您对开销有所了解。

关于Java内存不足的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14641794/

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