web-dev-qa-db-ja.com

Java大量のメモリを使用するアプリ。-Xmxを使用しますか?

Java 16G搭載のマシンで約15Gを使用するアプリがあります。最大ヒープサイズを設定する必要があるかどうかわかりません。

設定されている場合、jvmは制限までRAMをすべて消費し、その後、ガベージコレクションを開始し、15Gのヒープオブジェクトをチャーンしている間、すべてを停止しますか?

そうでない場合、JVMはマシンで使用可能なRAMのすべてを使用しないことによってパフォーマンスを低下させます。

私の特定のvmは:Java HotSpot(TM)64-Bit Server VM(build 1.6.0_03-b05、mixed mode))です。

ありがとう

24
Martin Redmond

-Xmx15Gは、最大ヒープサイズを15ギガに設定します。 Javaは、実行時に必要なものだけを割り当てます。設定しない場合は、デフォルトのみが使用されます。デフォルトの詳細については、 この投稿 を参照してください=。

-Xms15Gは、最小ヒープを15ギガに設定します。これにより、Javaは、それが必要かどうかにかかわらず、実行を開始する前に15ギガのヒープスペースを割り当てます。

通常は、JVMのチューニング方法に応じて、両方を適切な値に設定できます。

20
Cogsy

Java 6では、デフォルトの最大ヒープサイズは、存在するシステムメモリの量によって決まります。

Garbage Collector Ergonomics ページによると、最大ヒープサイズは次のとおりです。

物理メモリの4分の1または1 GBの小さい方。 J2SE 5.0以前は、デフォルトの最大ヒープサイズは64MBでした。

-Xmxスイッチを使用して、最大ヒープサイズを変更できます。使用方法の詳細については、 Java-Javaアプリケーションランチャー のドキュメントを参照してください。

12
coobird

最大ヒープサイズを設定しない場合(-Xmx)、デフォルトの最大サイズは64MBだけではありませんか?

設定しない場合、アプリケーションはOutOfMemoryErrorsで失敗しませんか?私はこの質問で混乱しています。このスイッチなしでアプリケーションを実行するにはどうすればよいですか?

0
matt b