在这个链接这里
他们描述了使用类加载器时的内存泄漏。现在这个评论:
只有当没有其他东西引用它时,垃圾收集器才会删除类加载器。所有类都持有对其类加载器的引用,所有对象都持有对其类的引用。结果,如果应用程序被卸载但其中一个对象仍然被持有(例如,由缓存或线程局部变量持有),则垃圾收集器无法删除底层类加载器!
我有点明白了。但在他们说的部分:
(例如,通过缓存或线程局部变量)
我是否正确地说缓存是指静态引用,而线程本地是指非静态线程本地变量。我这样说是因为线程局部内存泄漏的所有代码解释都将线程局部变量设为静态。例如,SO中的这个问题
我对缓存的评论的另一个问题是:当应用程序关闭时,静态变量将被 GC-ed,那么为什么这会出现问题?