とりわけSSLを使用するアプリケーションがあります。アプリケーションのポイントは、無限に実行されることです。今の問題は、時間の経過とともに次の画像が表示されるようです。
最初に、ヒープ ダンプ (Eclipse のメモリ アナライザー ツールを使用) を 2 つのポイントで調べます。 ) 最初はすべて問題ありません。私のアプリにはファイナライザー キューにいくつかのオブジェクトがあり、これらは消えます。しかし、30 分後、明確な理由もなく、ガベージ コレクションが発生している間、ファイナライザー クラスへの参照は消えません。これらのサイズは増加し続けており、オブジェクトとキュー内の次のファイナライザーを指す 10 個の参照が繰り返し発生しています。したがって、実際には、同じものへの参照の繰り返しチェーンであり、収集されることはありません。これは最初に収集されましたが。
したがって、私の質問は実際には2つあります。最初の質問:これが突然収集されない原因は何ですか? (コードをかなり注意深く調べたので、ファイナライザクラスによって参照されているもの(入力ストリームと出力ストリーム、明らかに。また、使用しているSSLライブラリからのいくつかの抽象的なもの、私は一般的な Client.getConnectionManager().shutdown() を使用していますが、これは最初にそれをクリアする必要があると思います。なんらかの理由で参照キューが大きくなりすぎて、コレクターがそれを処理できないということを何度も繰り返していますか?
2 番目の質問: この問題を解決するにはどうすればよいですか? あなたが見ている画像はJconsoleからのもので、手動GCを実行すると、これらはすべて消えて最初からやり直します。
正しい方向への助けや微調整は大歓迎です。