2011-11-22 55 views
2

我寫了一個主類在Eclipse中使用如下代碼:java.lang.OutOfMemoryError - new int [Integer.MAX_VALUE];

... 
int []test = new int[Integer.MAX_VALUE]; 
... 

它文件具有以下內容:

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

多少堆大小需要呢?我使用以下方法增加了eclipse大小,但它仍然失敗:

-Xms4g 
-Xmx4g 
+5

你會用20億整數在_earth_上做什麼? – thecoop

+0

ArrayList Marcelo

回答

7

int s是32位Java。您需要超過8G的內存來存儲該陣列(4 *(2 -1))。

+0

它們是32位,但它們是有符號的,所以數組只有2 31 1個元素。 (但是你的實際答案是正確的--4×2^1個字節是8GB - 因此無論如何+1。) – ruakh

+0

Gah,得到了計算權,但粘貼的公式是錯誤的: - /感謝您的更正。 – Mat

2
  1. 既然你宣佈你的基本類型的矢量(INT),Java將嘗試alocate 32位爲您的矢量的每一個現在的位置

  2. 你的長度矢量是真的2147483647

  3. 所以做一些計算:

存儲器需要32位= 2147483647 X = 68719476704位= 8589934588個字節

需要的內存= 8589934 KB

需要的內存= 8589 MB

需要的內存= 8.58 GB

所以,你將需要大約8 GB用於運行應用程序的。

相關問題