gpt4 book ai didi

java - java中的类卸载

转载 作者:行者123 更新时间:2023-11-30 06:38:10 26 4
gpt4 key购买 nike

当一个类加载器被垃圾回收时,它加载的类是否被卸载?当 JVM 以 verbose 模式运行时,所有加载的类都是 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。

当类加载器被 GC 时,我如何知道类已卸载?

最佳答案

当为它创建的任何类都是“Activity 的”时,类加载器不会被垃圾回收 - 部分原因是您可以向该类请求它的类加载器。

关于java - java中的类卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2559350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com