【发布时间】:2013-02-02 21:00:19
【问题描述】:
我正在做一个小任务,我需要在一个数组中存储大约 10 亿个整数。但是,我遇到了堆空间问题。你能帮我解决这个问题吗?
机器详情:Core 2 Duo 处理器,4 GB RAM。我什至尝试过 -Xmx 3072m 。有什么解决方法吗? 同样的事情在 C++ 中也有效,所以肯定有办法在内存中存储这么多数字。
下面是我得到的代码和异常:
public class test {
private static int C[] = new int[10000*10000];
public static void main(String[] args) {
System.out.println(java.lang.Runtime.getRuntime().maxMemory());
}
}
例外: 线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间 在测试中。(test.java:3)
【问题讨论】:
-
我们需要更多信息来回答这个问题...这些整数是随机的吗?他们的范围是多少?他们的顺序重要吗?可以重复吗?
-
你知道
java -mx对吗? -
@MiserableVariable:要存储 10 亿个
ints,您需要大约 4GB 的堆空间。这并不总是可用的...... -
这里几乎所有的回复都倾向于一种更有效地存储数据的方法,这是因为很有可能您尝试完成的工作无需将所有 10 亿个数字同时存储在内存中。如果您分享有关数据访问模式的详细信息,您可能会得到更有意义的回复。
标签: java arrays memory integer