こちらのリンクで
クラスローダ使用時のメモリリークについて説明しています。今このコメント:
クラスローダーは、他に何も参照されていない場合にのみ、ガベージ コレクターによって削除されます。すべてのクラスはクラスローダーへの参照を保持し、すべてのオブジェクトはクラスへの参照を保持します。その結果、アプリケーションがアンロードされても、そのオブジェクトの 1 つがまだ保持されている場合 (たとえば、キャッシュまたはスレッドローカル変数によって)、基になるクラスローダーをガベージ コレクターで削除することはできません!
なんとなくわかります。しかし、彼らが言う部分では:
(例: キャッシュまたはスレッドローカル変数による)
キャッシュとは静的参照を意味し、スレッドローカルとは非静的スレッドローカル変数を意味すると言っても過言ではありません。これは、スレッドローカル メモリ リークのすべてのコード説明で、スレッドローカル変数が静的になるためです。たとえば、SOのこの質問
キャッシュに関するコメントに関する私のもう 1 つの質問は、アプリケーションがダウンしたときに静的変数が GC されるのに、なぜこれが問題になるのでしょうか?