ファイナライザー オブジェクトによって引き起こされるメモリ リークに関するほとんどの調査では、コードまたは依存ライブラリのいずれかで、ファイナライズ メソッドをオーバーライドする必要があります。しかし、私のプロジェクト全体では、どこにも使用されていません。(私はJava8を使用しています)
メモリの問題に直面しています。私のサービスでは、サービスを再起動するとすぐに使用可能なメモリが減少し始め、7 日以内に 95% 減少し、後で頻繁に警告が表示されます。
上のグラフは、Y 軸で使用可能なメモリを示しています。上のグラフのすべてのピークは、サービスの再開のためのものです。
Eclipse Mat でヒープ ダンプを調べたところ、次のように表示されました。
ご覧のとおり、ほとんどすべてのスペースが 1 つのオブジェクトだけで占められています。つまりjava.lang.ref.Finalizer
、プロジェクトでフィールド Java 検索を行ったときに、finalize() メソッドを使用するコードが表示されません。
そして、メモリリークを見つけようとして行き詰まりました。問題を引き起こしている可能性のある他の理由はありますか。