java 怎样卸载一个类_Java 动态卸载类[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。
通过反射,我们可以动态的将类加载到方法区中,但是卸载这个类,却有着比较严苛的条件
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,这两个参数告诉虚拟机,需要打印出加载和卸载类的信息,实际运行的结果如下
这个类先是被加载,然后被卸载了
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144678.html原文链接:https://javaforall.cn
相关文章
- java list去重_JAVA基础-List去重的6种方式[通俗易懂]
- java判断一个对象是否为空_Java中判断对象是否为空的方法的详解
- java指定长度数组长度_Java声明数组时不能指定其长度[通俗易懂]
- java 调用.asmx_Java调用asmx的一个例子
- excel宏 java,Microsoft Excel宏运行Java程序
- java冒泡排序概练_Java的冒泡排序[通俗易懂]
- 在线学习Java的几个网站,别再盲目学习java了![通俗易懂]
- java 堆栈的声明_Java 堆栈[通俗易懂]
- java messagedigest_Java 自带的加密类MessageDigest类(加密MD5和SHA)[通俗易懂]
- eclipse创建一个java项目目录_Eclipse创建JAVA项目
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- java uuid 随机数_Java随机数和UUID[通俗易懂]
- java jersey使用总结_Java Jersey2使用总结
- java 文件上传到服务器_Java上传文件到服务器端的方法「建议收藏」
- java事务_Java 事务详解[通俗易懂]
- Java数组循环_java遍历object数组
- java反射 getMethod_JAVA 反射 getMethod() 和 invoke() 具体应用[通俗易懂]
- java 常量表达式,需要常量表达式? (Java switch语句)[通俗易懂]
- Java学习笔记之三十四超详解Java多线程基础编程语言
- Java学习笔记之七java函数的语法规则总结详解编程语言
- 在Linux中查看Java线程:一种方法(linux查看java线程)
- Linux环境中如何顺利执行Java程序?(linux下执行java)
- Java技术封装Redis,打造高效数据处理系统(java封装redis)
- 使用Java连接MySQL实现查询功能(java连接mysql查询)
- Java Redis一次实现无限数据加速的尝试(用java redis)
- 异常Java程序捕获Oracle异常从失败中学习(java捕获oracle)
- Java导入Oracle 实现快速数据传输(java导入oracle)
- 在Java中利用Oracle数据库进行应用开发(java中oracle)
- Redis面试中Java相关技术面试题汇总(redis面试题java)
- Oracle搭建Java开发环境的步骤(oracle中java)