2013-04-27 8 views
5

私は、ヒープ最大ヒープサイズが分かっている場合、最大オブジェクトサイズを計算する方法は?

for (int m = 128;; m++) { 
     try { 
      byte[] a = new byte[m * 1024 * 1024]; 
     } catch (OutOfMemoryError e) { 
      System.out.println(m + "M"); 
      break; 
     } 
    } 

と171Mを得た上で作成できる最大オブジェクトサイズを決定するために-Xmx256Mでこのテストを実行しました。このサイズを計算する方法はありますか?

+1

forループのインクリメントは 'm ++'にする必要がありますか? – michaelb958

+0

はい、それはmです、ありがとう –

+1

私は '-XX:+ UseG1GC'を使用し、' 255M'を取得しました。 – johnchen902

答えて

2

このサイズを計算する方法はありますか?

号最大割り当てオブジェクトサイズは、ヒープ内の利用可能な連続空き領域の量に依存します。 AFAIK、あなたが現在やっていることとは別に、それが何であるかを見つける実際的な方法はありません。

0

これは面白いですが、私は同じことを実行します。

java -Xmx256M -XX:+AggressiveHeap HeapTest //I hoped this would help 

しかし、私は常にAggressiveHeapと少ないしを取得します。

関連する問題