Java 类装入器或类在JVM中是否会死机?

Java 类装入器或类在JVM中是否会死机?,java,garbage-collection,jvm,metaspace,Java,Garbage Collection,Jvm,Metaspace,类装入器或类在JVM中是否会死机?我在读博客。作者写道,当达到最大大小时,会在元空间上引发垃圾收集,从而导致死掉的类装入器和类被垃圾收集 我想了解的是,如果对象变得不可访问,那么类加载器和类是否也可以应用同样的方法?如果是,那么怎么做 我想了解的是,如果对象变得不可访问,那么类加载器和类是否也可以应用同样的方法 是的,类加载器和类在某些情况下可能无法访问 这仅适用于动态创建的类加载器及其加载的类。初始引导和应用程序类加载器是永久可访问的,它们加载的任何类(define)都是永久可访问的 有很多

类装入器或类在JVM中是否会死机?我在读博客。作者写道,当达到最大大小时,会在元空间上引发垃圾收集,从而导致死掉的类装入器和类被垃圾收集

我想了解的是,如果对象变得不可访问,那么类加载器和类是否也可以应用同样的方法?如果是,那么怎么做

我想了解的是,如果对象变得不可访问,那么类加载器和类是否也可以应用同样的方法

是的,类加载器和类在某些情况下可能无法访问

  • 这仅适用于动态创建的类加载器及其加载的类。初始引导和应用程序类加载器是永久可访问的,它们加载的任何类(
    define
    )都是永久可访问的

  • 有很多可达路径,包括

    • 从类到其父类加载器
    • 从类加载器到它加载的每个类
    • 从一个类到它所依赖的每个类
    • 从每个对象到其类,以及
    • 从线程堆栈上的每个方法调用到定义该方法的类
简而言之,如果应用程序能够找到或使用(加载的)类或类加载器,那么它是可以访问的。否则我们就无法接近它

如果是,那么怎么做

通过去除使类加载器及其类可访问的所有路径。就像你想做一个普通的物体一样


(除了更难实现之外,因为许多可达性路径都在幕后,应用程序代码无法直接破坏它们。因此,广泛使用动态类加载、动态代理等的应用程序可能会出现元空间泄漏的问题。)

它并没有这样说。它说垃圾收集发生在死掉的类加载器上。更新的澄清问题我已经更新了这个问题以匹配博客中的声明,我的问题是关于类和类加载器的可达性,你的回答很清楚。