2011-07-27 10 views
8

私は2つのヒープダンプを比較するMATを使用しています。私は毎日ヒープダンプを取ってきており、毎日約200メグずつ成長しています。私はリークがjava.util.zipに関連付けられていると考えています。なぜなら、表が示していることのために、また、最近多くのファイルを解凍して解凍する新しいプロセスを追加したからです。私が支配を開きため、ろ過この時点で私はMATを使用して私のメモリリークを見つけるのに助けが必要です

Heap dump histogram compare

(画像参照)。 インフレータ。これにより、java.util.zip.Inflaterの大きなリストが作成されました。今私はこれらを開いているものを見たいと思いますので、私は1つを選んでPathをGCルートに実行しました。

GC Root

これはジャーインフレと私のプロセスとは何の関係も関係しているように見えます。この時点で私は立ち往生し、いくつかの提案が必要です。

EDIT 1

ショーンはThreadLocalsについて尋ねました。フィルタなしでdominator_treeを見ると、java.lang.ApplicationShutdownHooksがヒープの58%であることがわかります。これらのエントリの一部を展開すると、それらがThreadLocalMapにあるように見えます。私はそこに置くものをどのように見つけますか?

enter image description here

EDIT 2

ショーンさんのコメントは正しい軌道に乗って私を置きます。私はGlassfish v 2.0を使用しており、memory leakを持っています。新しいLogManagerを継続的に作成し、ApplicationShutdownHooksコレクションに追加します。

私は問題を回避するために、ApplicationShutdownHooksを開けて手動でコレクションからオブジェクトを削除しました。

+0

GCルートへのすべてのインスタンスのパスは次のようになりますか?これは代表的なサンプルではないかもしれません。 –

+0

16kインスタンスがありますので、いくつかのインスタンスが異なる可能性があります。私はいくつかを見てきました。なぜ私のイメージが表示されていないのか誰にも分かりますか? – Preston

+0

彼らは私にとってうまくいっています。 –

答えて

0

Seanのコメントは私に正しいトラックを置いてくれました。私はGlassfish v 2.0を使用していますが、メモリリークがあります。新しいLogManagerを継続的に作成し、ApplicationShutdownHooksコレクションに追加します。

私は問題を回避するために、ApplicationShutdownHooksを開けて手動でコレクションからオブジェクトを削除しました。

関連する問題