类加载器或类可以在 JVM 中死掉吗?我正在阅读一篇博客Oracle-垃圾收集和元空间。作者写道,当达到最大大小时,会在元空间上引发垃圾收集,结果死类加载器和类被垃圾收集
我想了解像对象变得无法访问一样是否也可以应用于类加载器和类?如果是,那么如何。
类加载器或类可以在 JVM 中死掉吗?我正在阅读一篇博客Oracle-垃圾收集和元空间。作者写道,当达到最大大小时,会在元空间上引发垃圾收集,结果死类加载器和类被垃圾收集
我想了解像对象变得无法访问一样是否也可以应用于类加载器和类?如果是,那么如何。
我想了解像对象变得无法访问一样是否也可以应用于类加载器和类?
是的,类加载器和类在某些情况下可能变得无法访问。
这仅适用于动态创建的类加载器以及它们加载的类。初始引导程序和应用程序类加载器是永久可访问的,它们加载的任何类 ( define
) 都将是永久可访问的。
有很多可达性路径,包括
简而言之,如果应用程序有任何方法可以找到或使用(加载的)类或类加载器,那么它是可访问的。否则我们无法到达。
如果是,那么如何。
通过摆脱使类加载器及其类可访问的所有路径。就像你会做一个普通的物体一样。
(除了因为许多可达性路径在幕后而难以实现,应用程序代码无法直接破坏它们。因此,广泛使用动态类加载、动态代理等的应用程序可能会遭受元空间泄漏的问题.)