ClassLoader
は永久世代メモリに保存されます。また、Java HotSpot™ 仮想マシンでのJava メモリ管理のホワイト ペーパーで指定されているように、永久世代メモリは確実にガベージ コレクションされます。それで、カスタムClassloader
はまだメモリリークにつながりますか? はいの場合、なぜそれが起こるのですか?
アップデート
@Marko Topolnik と @Prunge の助けを借りて、私の疑問は明確になりました。また、ClassLoader とメモリ リークについては、次の点が指摘されています。
- Custom
ClassLoader
は Perm 世代に保存されません。 - Customが範囲外の
ClassLoader
場合、メモリ リークが発生する可能性がありますが、オブジェクトClassLoder
を に設定しても、カスタムがロードしたクラスは引き続きアプリケーションによって参照されます。ClassLoader
null
- 特定のオブジェクトが必要ない場合は
ClassLoader
、ロードされたクラスから開発されたオブジェクトへのすべての参照が であることを確認する必要がありますnull
。 - によってロードされたクラスのいずれかが
ClassLoader
適格でないGC
場合、ClassLoader は適格ではありませんGCed
。