2016-07-05 17 views
-3

我有簡單的程序,它可以給我出的內存問題:創建整數數組thorws Java堆空間

public static void main(String[] args) { 

    int i[] = new int[457560000]; 
} 

這將引發以下錯誤:

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

我試圖在我的eclpse設置VM參數像這樣:-Xms1024M -Xmx2048M,但仍然有相同的錯誤。

我不需要這麼大的陣列,但是我在圖像處理方面遇到了圖像尺寸非常大的問題。在調試過程中,我發現AWT軟件包試圖創建這個數組,並且遇到內存問題。

如何解決這個問題?在運行此代碼之前需要設置多少內存?

更新:

我也試圖與6GB eclipse下運行配置VM設置設置XMX,我的機器得到了上吊一段時間,但再次面臨同樣的錯誤。

+0

爲什麼你需要創建一個這樣大小的數組? Java拋出錯誤是因爲它沒有足夠的內存來創建一個很大的變量數組。 – Confiqure

+7

你真的需要4.56億整數? –

+1

可能的重複[如何處理「java.lang.OutOfMemoryError:Java堆空間」錯誤(64MB堆大小)](http://stackoverflow.com/questions/37335/how-to-deal-with-java- lang-outofmemoryerror -java-heap-space-error-64mb-heap) – Filburt

回答

0

您的運行配置的給定代碼段至少需要-Xmx2640M,具體取決於您使用的是哪個JRE。

由於-Xmx是僅在必要時才使用的最大值,您可以使用例如-Xmx256000M運行程序,然後查明實際使用的內存數量。

+0

我已經確定了,你可以看到我的問題,我提到了它。 – user3181365

+0

如果我用'-Xmx2048M'運行你的代碼片段,發生_OutOfMemoryError_和'-Xmx2640M'就不會有錯誤。我在Windows上使用了64位jdk1.8.0_60來運行你的代碼片段。你用什麼JRE? – howlger