2017-02-25 34 views
-1

10^9尺寸数组正在显示以下错误:如何声明在Java

"Exception in thread "main" java.lang.OutOfMemoryError: Java heap space"

当我声明:

long[] ar = new long[1000000000]; 

那么如何声明一个数组,其大小为10^9 ?

+1

我认为答案是,不要试图宣布一个需要更多内存的可笑的大阵列,无论你认为你需要它,可能找到另一种方式来做到这一点。 – khelwood

+2

这听起来像是[X Y问题](http://meta.stackexchange.com/a/66378/286538)。你可能应该编辑问题并解释你想解决的实际问题。 – RealSkeptic

+0

创建一个这种大小的数组的目的是什么,特别是用longs。这只会让一切变得更糟。 – Ungeheuer

回答

0

要创建一个10亿8字节的数组long值,您需要至少8 GB的旧版本的可用内存。如果你有足够的内存开始32 GB,我建议给堆至少12 GB。

如果你没有这么多的内存,你可以在Linux上使用内存映射文件,但很可能存在更有效的内存存储方式(取决于你为什么试图这样做)