2017-10-17 4 views
0

私は現在、最新のJava 8バージョンでG1 GCを探しています。G1ガベージコレクタの領域サイズを知るには?

私は "Humongous Allocation"に問題があるので、私の地域サイズがどれくらい大きいか知りたいです。

リージョンサイズの設定方法を知るにはどうすればよいですか?

自分で領域サイズを計算するにはどうすればよいですか?

おかげ

答えて

1

Java-8のG1領域サイズはstartingHeapSize/2048に基づいており、1MBと32MBの間で2の第1累乗に丸められます。領域サイズ< 1MBまたは> 32MBはサポートされていません。

​​で領域サイズを設定することもできます(ただし、値は2のべき乗/範囲の制限があります)。

実際には、JVMは2048から4095の間の領域数(2GBから128GBまでのヒープを想定)に偏っているようです。一般的には

これらのヒープサイズの範囲ごとの地域-サイズされています

<4GB - 1MB 
<8GB - 2MB 
<16GB - 4MB 
<32GB - 8MB 
<64GB - 16MB 
64GB+ - 32MB 

ノート、MBは、MIBおよびGBは、私が最大ヒープ(Xmxのに推測基づいている、実際にジブ

+0

私の投票を変更しました。この答えはより正確です。 – keiki

1

領域サイズがヒープのサイズに基づいて、起動時にJVMによって計算されます。 ヒープのデフォルト値は、物理メモリの1/4または1GB(いずれか小さい方)です。 thisを参照してください。

領域のサイズは、ヒープサイズによって1MBから32 MBまでさまざまです。目標は、2048以上の地域を持たないことです。

起動スクリプトに-XX:G1HeapRegionSize=XXを指定することによって、サイズを上書きすることができます。

+1

で実際にあります)正しい? – keiki

関連する問題