最近のプロジェクトで奇妙なメモリ リークの問題に直面しています。メッセージを「ハンドラー」コードに送信する「メイン」コードがあります。通信されると、ハンドラー コードは固定タスクを実行し、結果をディスクに書き込み、終了します。固定タスクは、別のクラスの特定の関数への呼び出しを介して実行されます。
この関数の実行中に、(予想どおり) ヒープ サイズが増加します。ただし、コードの完了時に、結果自体が多くのスペースを占めるべきではありません。handler の呼び出しが完了すると、メモリ フットプリントが小さくなることが予想されます。ただし、「トップ」は、ハンドラーがまだ大量のメモリ (RES) を消費していることを示しています。
スレッドによって消費されたヒープが確実に回収されるように、スレッドを終了するべきではありませんか? 関数の実行後に System.gc() 呼び出しを作成しようとしましたが、ガベージ コレクションは強制されません。