java 怎样卸载一个类_Java 动态卸载类[通俗易懂]

java 怎样卸载一个类_Java 动态卸载类[通俗易懂]通过反射,我们可以动态的将类加载到方法区中,但是卸载这个类,却有着比较严苛的条件1.该类所有的实例都已经被GC,也就是JVM中不存在该Class的任何实例。2.加载该类的ClassLoader已经被GC。3.该类的java.lang.Class对象没有在任何地方被引用,如不能在任何地方通过反射访问该类的方法.publicstaticvoidmain(String[]args)th…

大家好,又见面了,我是你们的朋友全栈君。

通过反射,我们可以动态的将类加载到方法区中,但是卸载这个类,却有着比较严苛的条件

1. 该类所有的实例都已经被GC,也就是JVM中不存在该Class的任何实例。

2. 加载该类的ClassLoader已经被GC。

3. 该类的java.lang.Class 对象没有在任何地方被引用,如不能在任何地方通过反射访问该类的方法.

public static void main(String[] args) throws InterruptedException {

// 等待两秒,让系统加载完所有的类

Thread.sleep(2000);

try {

System.out.println(“Loading…”);

// 利用反射,加载ComplexClass类

URLClassLoader loader = new URLClassLoader(new URL[]{new URL(“file:/Users/wuchen/Desktop/”)});

loader.loadClass(“com.company.wuchen.demo.ComplexClass”);

// 将加载这个类的URLClassLoader的引用置为null,以便让这个类释放

loader = null;

// 启动垃圾回收(JVM虚拟机规范中明确说明,这个方法并不能保证垃圾回收一定执行,但是在此处的确有执行)

System.gc();

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

在虚拟机的参数上添加-XX:+TraceClassLoading -XX:+TraceClassUnloading,这两个参数告诉虚拟机,需要打印出加载和卸载类的信息,实际运行的结果如下

0818b9ca8b590ca3270a3433284dd417.png

这个类先是被加载,然后被卸载了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144678.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月18日 下午11:40
下一篇 2022年5月19日 上午6:00


相关推荐

  • 千问App全面接入阿里生态:淘宝、闪购,测试AI购物,月活已突破1亿

    千问App全面接入阿里生态:淘宝、闪购,测试AI购物,月活已突破1亿

    2026年3月13日
    2
  • 流水线设计方案_与流水线的形式相对的叫什么

    流水线设计方案_与流水线的形式相对的叫什么流水线设计是一种典型的面积换性能的设计。一方面通过对长功能路径的合理划分,在同一时间内同时并行多个该功能请求,大大提高了某个功能的吞吐率;另一方面由于长功能路径被切割成短路径,可以达到更高的工作频率,如果不需要提高工作频率,多出来的提频空间可以用于降压降功耗。流水线设计是完美的时间并行。因为流水线上每一级的处理都是一个时钟周期的延时,并且一动则全动,每一级的延时可以完美的掩盖起来,最高实现与流水级数相同数量的请求并行度。流水线实际上是将组合逻辑系统分割,然后在间隙插入寄存器,暂存中间数据。其思想就是要将

    2022年8月14日
    6
  • 线性代数的消元法_高斯消元法例题

    线性代数的消元法_高斯消元法例题1.消元的思想针对下面的方程,我们无法直接得到方程的解。$$\begin{alignedat}{2}&x\space\space&2&y\space=\space

    2022年8月2日
    14
  • jQuery选择器大全总结

    jQuery选择器大全总结jQuery 选择器 jQuery 的选择器基本选择器基本过滤选择器属性过滤选择器表单选择器子元素选择器操作元素属性操作样式操作样式类获取或设置元素高度和宽度操作 HTML 代码操作 text 代码 jQuery 的选择器基本选择器 id 选择器 id 类选择器 class 标签名选择器 匹配所有元素基本过滤选择器 Element first 选取第一个元素 Element last 选取最后一个元素 Element not selector 去除所有与给定选择器匹配的元素 Element ev

    2026年3月18日
    3
  • Error:Execution failed for task ‘:app:mergeDebugResources’.

    Error:Execution failed for task ‘:app:mergeDebugResources’.

    2021年9月30日
    45
  • TCP三次握手详解-深入浅出(有图实例演示)[通俗易懂]

    TCP三次握手详解-深入浅出(有图实例演示)[通俗易懂]TCP是属于网络分层中的传输层,因为OSI分为层,感觉太麻烦了,所以分为四层就好了,简单。分层以及每层的协议,如下两张图:TCP三次握手TCP三次握手简单如下图:TCP三次握手的过程描述:1.客户主动(activeopen)去connect服务器,并且发送SYN假设序列号为J,服务器是被动打开(passiveopen)2.服务器在收到SYN后,它…

    2022年6月28日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号