2011-08-03 7 views
1

Javaアプリケーションがあまりにも多くのメモリを消費し、memroyが残っていないため、完全なLinuxボックスがOOM(OOM Killer Processが間違ったプロセスを強制終了)でクラッシュしました。Java XmX = Linux OOMを防ぐために設定する必要があります

私の質問は、JVM Paramter -XmXを使用すると、-XmXオプションで指定されたメモリをJavaで使用できなくなるという制限がありますか?言い換えれば、もし私が-XmXを指定しなければ、javaは結果をより多くのメモリに割り当てるかもしれません。私のLinuxのボックスはOOMで自分自身をcrahsingしていますか?

ありがとうございました! Jens

答えて

2

デフォルトの最大ヒープサイズがあります(以前は64Mでしたが、今は128Mだと思います)。-Xmxパラメータはその最大サイズを変更します。 OracleのJVMは、そのパラメータで指定されているよりも大きなヒープを割り当てません。

これは、-XmxがJVMで使用されるRAMの総容量を示しているわけではありません。実際にそれ以上のものを使用します。いくつかは、JVM実装自体の実行可能コード用です。 "permgen"領域に使用されるメモリと、場合によっては他の目的のためにメモリマップされたバッファもあります。しかし、OracleのJVMは、どんな場合でも、RAMの使用量を増やすことはありません。常に上限があります。

Linuxボックスにスワップスペースがないのはなぜですか?それは安く、最初はこの種のことが起こらないようにします。

3

Java 6のデフォルトの最大値はメインメモリの1/4です。これは、アプリケーションの仮想メモリの合計がメインメモリとスワップ領域を超える可能性があることを意味します。

メモリのコスト(8GBのコストが40ポンド以下)を考えると、メモリを増やす必要があります。ただし、メモリを少なくしたり、スワップ領域を増やしたりすることで、枯渇する可能性は低くなります。

関連する問題