快捷搜索:  xxx  as  推理研究所  幼幼  侦探研究所

宝运莱官网站1818:URLClassLoader会“挂住”所有它已经打开了的在classpath上的文件



嗯,这问题虽然好久曩昔就知道了,但近来一个功能恰恰必要让ClassLoader有些机动性,就又栽在这里了。顺便把这个问题记宝运莱官网站1818下来。

Sun的JDK里最紧张的两种ClassLoader,sun.misc.Launcher.ExtClassLoader和sun.misc.Launcher.AppClassLoader都是承袭了URLClassLoader的(bootstrap ClassLoader并不是Java法度榜样可见的ClassLoader,不算在内;它以致不承袭ClassLoader这个基类,根本不是一个Java object宝运莱官网站1818)。其余一些自定义ClassLoader为了实现方便也会承袭URLClassLoader,例如GroovyClassLoader。

但便是这么紧张的URLClassL宝运莱官网站1818oader却不停有一个特点:它一旦打开了它所知的classpath上的文件就会把那些文件整个锁住,直到它被卸载前都不会开释掉落。然则ClassLoader什么时刻才被开释这就无法猜测了,里面引用的JarFile的finalizer什么时刻被调用又得看RP,诶……

在Java 7傍边URLClassLoader新实现了Closeable接口,添加了一个clo宝运莱官网站1818se()措施,专门用于处置惩罚这个问题。在调用了某个URLClassLoader实例上的close()措施后,该实例就无法再宝运莱官网站1818用于加载类或资本;蓝本已经打开的类或资本仍旧是可用的。

但在Java 7正式宣布之前,如果想改动已经被URLClassLoader打开的JAR包就没好法子了。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: