Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的类卸载_Java_Garbage Collection_Classloader - Fatal编程技术网

java中的类卸载

java中的类卸载,java,garbage-collection,classloader,Java,Garbage Collection,Classloader,当类加载器被垃圾收集时,它所加载的类是否被卸载? 当JVM以详细模式运行时,所有加载的类都是o/p。类似地,JVM在卸载类时会记录日志吗 我编写了一个自定义类加载器来测试这一点,但无法看到任何用于卸载类的详细日志 CustomClassLoader loader = new CustomClassLoader(new URL[]{}, CustomClassLoader.class.getClassLoader()); loader.addURL("D:\\workspace\\Clas

当类加载器被垃圾收集时,它所加载的类是否被卸载? 当JVM以详细模式运行时,所有加载的类都是o/p。类似地,JVM在卸载类时会记录日志吗

我编写了一个自定义类加载器来测试这一点,但无法看到任何用于卸载类的详细日志

CustomClassLoader loader = new CustomClassLoader(new URL[]{}, CustomClassLoader.class.getClassLoader());
    loader.addURL("D:\\workspace\\ClassLoaderTest\\implementation.jar");

    Class c = null;
    try {
        c = Class.forName("Horse",false,loader);
        if (c != null) {
            try {
                Animal animal = (Animal)c.newInstance();
                animal.eat();
            }
            catch(Exception ex) {
                ex.printStackTrace();
            }
        }
    }
    catch(Exception e) {
        e.printStackTrace();
    }
            c = null;
    loader = null;
    byte[] b = new byte[58*1024*1024];
    System.gc();
    ClassLoadingMXBean clBean = ManagementFactory.getClassLoadingMXBean();
    System.out.println("Number of classes currently loaded " + clBean.getLoadedClassCount());
    System.out.println("Number of classes loaded totally " + clBean.getTotalLoadedClassCount());
    System.out.println("Number of classes unloaded " + clBean.getUnloadedClassCount());
即使ClassLoadingMXBean也给出了0个卸载的类


当类加载器是GCed时,我怎么知道类被卸载了呢?

当为类加载器创建的任何类都是“活动的”时,类加载器不会被垃圾收集,部分原因是您可以向类请求其类加载器