「リリースされた」とは、クラスローダーへの参照が残っていないことを意味します。
頻繁に再デプロイされる Java EE アプリケーションが permgen スペースを消費するという問題が発生しています。分析の結果、Java EE アプリのシングルトンがアプリケーションの外部のアプリケーション クラスローダー オブジェクトへの参照を渡し (Java EE 規則に違反して)、アプリのアンデプロイ時にそれらをクリアしていないことがわかりました。
シングルトンまたはクラス オブジェクトへの参照が他に残っていないと仮定すると、そのクラスのクラスローダーが解放されたときにシングルトンの finalize() が呼び出されますか? そこの不正なインバウンド参照をクリアしたいと思います。または、クラスローダー自体がガベージコレクションされるまでファイナライズが呼び出されないcatch-22にいますか?したがって、不正な外部参照のために呼び出されることはありませんか?
ここでの主な質問はおそらく次のとおりです。
この場合、クラスローダーがまだガベージコレクションできない場合、クラスオブジェクトはガベージコレクションされますか? これは、クラスローダの動作の仕様に依存するか、実装に依存する可能性があります。
参照 (別の種類! ;-)) は歓迎されますが、必須ではありません。