我正在使用扩展 URLClassLoader 的自定义类加载器。我将一些类加载到我的自定义类加载器中并执行一些任务。任务完成后,我想处理类加载器。我尝试通过将引用设置为 null 来做到这一点。
但这不会对类加载器进行垃圾回收。
有什么方法可以帮助我实现目标吗?
最佳答案
基本上,正如@invariant 已经指出的那样,取消引用由特定类加载器加载的所有类应该使该类加载器成为可回收垃圾。但是,(至少)有一个异常(exception):如果一个类被序列化,则该类(及其类加载器)将在内部被 ObjectStreamClass
引用,这是一个原始类,因此永远不会被垃圾收集.所以在这种情况下,在整个 JVM 终止之前,类加载器也不能被垃圾回收。
查看完整说明 here ,在“与垃圾收集和序列化相关的问题”部分。
关于java - 处理一个类加载器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2552218/