Ubuntu Linux 3.2.0-25-virtual で Oracle Java 1.7.0_05 を使用し、7.5 GB のメモリを持つ amazon EC2 インスタンスで、それぞれにスイッチ -Xmx 2000m を使用して 3 つの Java インスタンスを開始します。
スワップ領域のないデフォルトの Ubuntu EC2 AMI 構成を使用します。
これらのインスタンスを数週間実行した後、そのうちの 1 つがフリーズします。おそらくメモリ不足です。しかし、私の質問は、メモリ リークを見つけることではありません。
アプリを再起動しようとすると、Java から 2000 MB のメモリを割り当てられないというメッセージが表示されます。サーバーを再起動することで問題を解決しました。
つまり、2000 + 2000 + 2000 > 7500?
この問題は 2 回発生しており、申し訳ありませんが、適切な診断ができていません。それぞれが最大 2000 MB を使用する Java プロセスが 2 つしか残っていない状態で、どのようにスペースが不足するのでしょうか? 次にこの問題が発生したときに、この問題をどのように診断する必要がありますか? ここに表示するために、プログラムを起動できないときに取得した「無料の -h」出力があればいいのにと思います。
ティア。