6

今日、私は、匿名クラスとして作成された多数のオブジェクトを持つ私のアプリケーションでメモリリークを発見しました。これは、各オブジェクトが独自のクラスを定義してヒープに入れた古典的な例でした。Javaの匿名クラスのGCルールを見つける方法は?

Eclipse Memory Analyzerで実行されたランタイム・メモリー・プロファイラーおよびヒープ・ダンプ分析では分かりませんでした。

実行時にスレッドID(または少なくとも親クラスローダー)で作成されたすべての匿名クラスをログに記録する方法を知りました。

私はこの1つのことだけで、根本的な原因を簡単に見つけることができると思います。

答えて

1

私は、すべての匿名のクラスをリストすると、どこにいても、通常はたくさんあります。

おそらく、内部クラス参照(匿名クラスを含む)によって保持されているクラスのインスタンスを検索するロジックが必要です。

enter image description here

は、検査によって作成したオブジェクトは、そのようなすべてのインスタンスが含まれており、その後、GCルートへのパスを示すことができる:

enter image description hereJProfiler

は、対応する検査があります

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

関連する問題