メモリリークがあると思います。
(最初のステップは問題を認めることだと彼らは言いますよね?)
とにかく、私はそうだと思います - 地域ごとのヒープの添付画像を参照してください: . 緑はエデン、青/赤はS0/S1、紫はオールド。私は無制限の在職期間 (> 15) を持っており、メモリが割り当てられてから古い世代に流出するまでに多くの時間が経過しました。したがって、メモリリークです。おもう。
では、問題は、何が漏れているのかを分析するにはどうすればよいでしょうか? ご覧のとおり、私の Eden は非常にアクティブです。多くのオブジェクトが常に作成および破棄されています。
古い世代だけのヒープダンプを取る方法はありますか? または、完全なヒープダンプで古い世代を特定しますか (そうであれば、どのツールを使用しますか)?
編集 1: 明確化:オブジェクトをメモリに保持する必要があることは何もしていません。最初の起動後に割り当てたものはすべて、若くして死ぬはずです。
Edit2: 新しい調査結果: 私はヒープ ダンプを取得し、狂ったように GC を実行し、別のダンプを取得しました。2 つ目は、古い世代の使用率が大幅に低下したことを示しています。2 つの主な違いは、ファイナライザーが保持するオブジェクトでした。ファイナライザーは若い GC サイクルで実行されませんか? 彼らは常に完全な GC がクリーンアップされるのを待ちますか?