簡體   English   中英

java.lang.OutOfMemoryError - new int [Integer.MAX_VALUE];

[英]java.lang.OutOfMemoryError - new int[Integer.MAX_VALUE];

我在Eclipse中編寫了一個Main類,其代碼如下:

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

它具有以下文件:

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

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

-Xms4g
-Xmx4g

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

  1. 因為你聲明了一個原始類型的向量(int),Java將嘗試為你的向量的每個位置分配32位

  2. 你向量的長度實際上是2147483647

  3. 所以做一些計算:

需要的內存= 32位x 2147483647 = 68719476704位= 8589934588字節

需要的內存= 8589934 KB

需要的內存= 8589 MB

需要的內存= 8.58 GB

因此,您需要大約8 GB才能運行您的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM