为什么不卸载类加载器就不能卸载类?

Eve*_*one 5 java classloader

'在java中卸载类'的答案说 -

"可以卸载类的唯一方法是使用类加载器进行垃圾回收." 我看了一下JLS,却无法理解

为什么会这样?

Nic*_*ore 13

只有在收集垃圾时才会卸载一个类,为此,必须在任何地方都不会引用它.并且类加载器保持对它加载的每个类的引用.

  • 它保留了一个参考,所以如果要求再次加载它,它可以返回相同的.否则,您将使用不同的refs加载相同类对象的多个实例. (3认同)
  • 好吧,它只能保留对类的弱引用,以防止同一类的不同版本浮动的情况,但仍允许类卸载.然而,静态不会按预期工作 - 如果你修改静态,你会希望修改能够"永远"存活 - 如果一个类在加载器周围被垃圾收集,那么以后的类重新创建将具有静态"重置". (3认同)
  • 为什么它会保留参考? (2认同)