gpt4 book ai didi

java - int[] 和 Integer[] 数组的内存占用

转载 作者:行者123 更新时间:2023-12-02 07:52:13 25 4
gpt4 key购买 nike

我尝试创建一个整数数组(我尝试使用自己的对象,但 int 也发生了同样的情况),大小为 3000 万。我不断收到“OutOfMemoryError:Java 堆空间”

Integer [] index = new Integer[30000000];
for (int i = 0 ; i < 30000000 ; i++){
index[i] = i;
}

我使用“Runtime.getRuntime().totalMemory()”和“maxMemory()”检查了总堆空间看到我从 64 MB 开始,最大值为 900+ MB,在运行过程中,我的堆和压碎达到 900+ MB。

现在我知道 Integer 需要 4 个字节,所以即使我乘以 30*4*1000000,我仍然只能得到大约 150-100 兆。

如果我尝试使用原始类型,例如 int,它会起作用。

我该如何修复它?

最佳答案

Java 的 int 原语将占用 4 个字节,但如果您使用像 Integer 这样的 ValueObject,它将占用更多空间。根据您的机器,单独的引用可能占用 32 或 64 位+它所包装的原语的大小。

如果空间是个问题,您可能应该只使用原始整数。 Here is a very good SO answer that explains this topic in more detail

关于java - int[] 和 Integer[] 数组的内存占用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6081955/

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