2017-02-25 35 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上使用內存映射文件,但很可能存在更有效的內存存儲方式(取決於你爲什麼試圖這樣做)