【发布时间】:2015-12-03 12:02:24
【问题描述】:
我正在编写一个程序,它需要一个包含 5 亿个元素的整数数组。但是,我的最大堆空间太小了。我无法将其拆分为许多较小的数组并一次使用一个或增加我的堆大小。我能做什么?
【问题讨论】:
-
您使用的是 32 位还是 64 位 JVM?在 32 位上,限制为 4GB,当您创建该大小的数组时已经达到该限制。 64 位允许您分配大量的该数量。
-
为了让我们帮助提出可行的替代方案,您必须解释一下为什么您需要同时在内存中存储所有这些数字。
-
我很确定我使用的是 64 位。我在 Program Files(x86) 中有一台 64 位计算机和 Java。我可能想出一种使用数组的方法,但是我已经编写了代码来使用它,它提高了计算速度。我使用数组中索引较低的元素来计算索引较高的元素。然后我循环遍历数组并将某些值相加。
-
单个对象的大小限制可能在 2-4GB 左右,即使在 64 位 JVM 上也是如此
-
Program Files(x86) 适用于 32 位程序。
标签: java arrays heap-memory