4

メモリ ダンプを取得し、メモリ アナライザーで分析しました。java.lang.ref.finalizer オブジェクトが使用するメモリの 73% を示しています。この非常に大きな物体の中にあるものを見に行きました。オブジェクトの再帰的な軌跡のように見えることがわかりました。以下のようになります

Finalizer
|__ Finalizer (recursive)
|__ java.io.FileInputStream or org.eclipse.jetty.util.resource.FileResource

FileResource 内で、war ファイルを抽出するパスを見つけましたが、FileInputStream オブジェクト内にあるものを見つけることができませんでした。

スクリーンショットもここで見つけることができます。 https://lh4.googleusercontent.com/-uZTZ031DlqI/UD33kMskuZI/AAAAAAAABYo/eOrqw65k_Mw/s1179/summary.png

https://lh6.googleusercontent.com/-yWBPUV_71js/UD33kAYYDEI/AAAAAAAABYk/J9fF_WwOeO4/s1074/details.png

私にお知らせください。

4

1 に答える 1

2

それ自体はリークではありません。JVMのファイナライズメカニズムについては、http://www.oracle.com/technetwork/articles/javase/finalization-137655.htmlをお読みください。

ファイナライズ可能なオブジェクトが多すぎる場合、ファイナライザーが問題になる可能性があります。この場合はFileInputStreamです。ガベージコレクターをより頻繁に実行し、それらをより速く処理するために、ヒープサイズをいくらか小さくすることを試みることができます。

または、可能であれば、FileInputStreamsの使用量を減らしてください。

于 2012-08-30T06:04:42.483 に答える