2
私たちのコードは-XX:+ HeapDumpOnOutOfMemoryErrorフラグで実行され、OOM上でhprofファイルを取得します。 最近、私はインストールからそのようなファイルを取得しました。私はEclipseメモリアナライザ(MAT)でそれを開いて、合計サイズが46MBであることがわかりました。プロセスが-Xmx1024mで開始された場合、どうすればできますか?なぜhprofファイルはjvmに与えられるメモリ量よりもはるかに小さいでしょう
サイズは、割り当てられた最大サイズにはるかに近くてはなりませんか?
これはjdk1.6と同じです。
EDIT:ok今私はsimilar questionを見つけましたが、実際にPermGenのスペースの問題が原因である可能性があります。私のプロセスは23日間続きました。私は非常に頻繁に、1秒に1回多分、おそらく私が知る限り新しいスレッドを作成します。何とか私がこれを確認できるかどうか誰もが知っていますか?
はい私はこれについて考えましたが、他のヒントポイントはありません...私の編集を見て、ここで関連する質問が見つかりました – Persimmonium
最も簡単な原因は元の例外を読み取ることです。たとえば、 "java.lang.OutOfMemoryError:Java heap space"、 "java.lang.OutOfMemoryError:PermGen space"または "java.lang.OutOfMemoryError:Direct buffer memory"また、スタックトレースは失敗した操作を示すはずです。手掛かり –
残念ながら私は例外をキャッチしませんでした – Persimmonium