2

メモリリークのあるコードがあります。Java に最適なツールの 1 つと言われているMemory Analyze Tool (MAT)を見つけました。それは派手に見え、問題の多くの詳細を提供します。それらに関する多くの情報です。しかし、最初に言うべきことを言っていないか、見つけられませんでした。

私のコードが次のようになっているとしましょう:

class LeakyClass{
    //do some stuff in thousands of lines 
    void leaky_method(){
        char[] chars = //some how cause memory leak --> line 12434
    }
    //do more stuff in thousands of lines 
}

このようなクラスはあと 30 ~ 40 ありますが、私が書いたものではありません。

問題はMAT、私が問題を抱えていることを示していますがchar[]、それについて何も言わline 12434ないか、見つけることができません。見つける方法、または少なくとも名前を付ける方法はありますthat lineか? 行が1つしかない場合は、その行を検索しますが、漏れはどこにでもあるのでしょうか?classmethod

メモリ リークのイメージを次に示します。 メモリリーク

ちなみに、いくつかのチュートリアルを読みましたが、それについて何も見つかりませんでした。前もって感謝します、

4

1 に答える 1

1

HPROF ヒープ ダンプしかない場合、この情報は利用できません。割り当てごとに割り当てスタック トレースを記録するプロファイリング エージェントが必要です。

たとえば、JProfilerにはこの機能があります。セッションの起動ダイアログで割り当ての記録を有効にしてから、ヒープ ダンプを取得します。

ヒープ ウォーカーの [クラス] ビューで、[char[]] を選択し、新しいオブジェクト セットを作成します。次に、ヒープ ウォーカーの [割り当て] タブに移動し、そのようなすべての割り当ての累積されたスタック トレースを確認します。

ここに画像の説明を入力

免責事項: 私の会社は JProfiler を開発しています。

于 2015-11-06T10:50:53.393 に答える