5

是否值得在用于缓存的弱哈希映射(WeakHashMap)中使用 Class 作为键?众所周知,类对象在程序启动时创建,并在程序结束时销毁。那么,这样做有什么意义还是我对此有一些误解?

4

1 回答 1

6

当类加载器加载它时,加载一个类。如果 ClassLoader 被卸载,那么它的类也会被卸载。一个 ClassLoader 不能被卸载,直到它的所有类都可以被清理,所以如果你想卸载一个类加载器,使用一个 Weak 类集合是一个非常好的主意。

在一个简单的 Java Se 程序中,您可能有两个或三个类加载器,它们为您提供并在程序的整个生命周期中存在,您永远不需要考虑它们。

但是,如果您有像 Java EE 或 OSGi 这样的容器,它们可以在其自己的类加载器中加载每个应用程序或每个模块,从而允许即时安装、升级或删除它们(无需重新启动 JVM)

于 2012-09-25T07:48:26.030 回答