私のアプリケーションで悪名高いOutOfMemoryExceptionが発生しました。ヒープスペースの量を単に増やすのではなく、問題の内容を調べようとしましたが、アプリケーションから何らかのリークが発生しました。Javaヒープスペース - -Xmxはどのように正確に動作しますか?
JVMパラメータ-XXを追加しました.OutOfMemoryエラーが発生したときにヒープダンプを作成するHeapDumpOnOutOfMemoryErrorが追加されました。次に、異なるプロファイリングツールを使用して作成されたダンプファイルを分析しました。私はその後、-Xmxパラメータを使用してパターンを観察し始めました。
私が困惑したことは、次のとおりです。ダンプを解析すると、すべてのオブジェクトの合計サイズが、-Xmxパラメータを使用して設定した合計よりもずっと少ないことがわかりました。 たとえば、-Xmxを '2048m'に設定します。私がダンプファイルを分析すると、ヒープ上に合計400Mbのオブジェクトが見つかりました。私は2GBを見つけることを期待していた。何か不足していますか?
あなたのOOMEが実際にヒープメモリを参照していることを確認しましたか? OOMEがスローされるいくつかの(比較的まれな)ケースがありますが、完全なヒープではありません。 –
@ Joachim、JVM x86のスレッドが多すぎてOOM例外もクラッシュする – aalku