Java 16G搭載のマシンで約15Gを使用するアプリがあります。最大ヒープサイズを設定する必要があるかどうかわかりません。
設定されている場合、jvmは制限までRAMをすべて消費し、その後、ガベージコレクションを開始し、15Gのヒープオブジェクトをチャーンしている間、すべてを停止しますか?
そうでない場合、JVMはマシンで使用可能なRAMのすべてを使用しないことによってパフォーマンスを低下させます。
私の特定のvmは:Java HotSpot(TM)64-Bit Server VM(build 1.6.0_03-b05、mixed mode))です。
ありがとう
-Xmx15G
は、最大ヒープサイズを15ギガに設定します。 Javaは、実行時に必要なものだけを割り当てます。設定しない場合は、デフォルトのみが使用されます。デフォルトの詳細については、 この投稿 を参照してください=。
-Xms15G
は、最小ヒープを15ギガに設定します。これにより、Javaは、それが必要かどうかにかかわらず、実行を開始する前に15ギガのヒープスペースを割り当てます。
通常は、JVMのチューニング方法に応じて、両方を適切な値に設定できます。
Java 6では、デフォルトの最大ヒープサイズは、存在するシステムメモリの量によって決まります。
Garbage Collector Ergonomics ページによると、最大ヒープサイズは次のとおりです。
物理メモリの4分の1または1 GBの小さい方。 J2SE 5.0以前は、デフォルトの最大ヒープサイズは64MBでした。
-Xmx
スイッチを使用して、最大ヒープサイズを変更できます。使用方法の詳細については、 Java
-Javaアプリケーションランチャー のドキュメントを参照してください。
最大ヒープサイズを設定しない場合(-Xmx
)、デフォルトの最大サイズは64MBだけではありませんか?
設定しない場合、アプリケーションはOutOfMemoryError
sで失敗しませんか?私はこの質問で混乱しています。このスイッチなしでアプリケーションを実行するにはどうすればよいですか?