首页   快速返回

java类卸载机制     所属分类 java
加载、验证、准备、解析、初始化、使用、卸载

加载器 Class对象 
Object getClass()
public final native Class getClass();
Class getClassLoader()

Java虚拟机自带的类加载器加载的类,不会被卸载。

根类加载器、扩展类加载器和系统类加载器

用户自定义的类加载器加载的类可以被卸载

MyClassLoader  Hello 类 
MyClassLoader对象结束生命周期,Hello类的Class对象 生命周期也会结束,Hello类在方法区内的二进制数据结构也会被卸载。

ClassLoader实例或者Class(java.lang.Class)实例 在堆中存在 ,需要依靠gc回收


修改 clinfo.jsp  热更新
该jsp会被卸载 重新加载

org.apache.jsp.clinfo_jsp@6acc4f06
org.apache.jasper.servlet.JasperLoader@6f597b0a

org.apache.jsp.clinfo_jsp@6e068f87
org.apache.jasper.servlet.JasperLoader@71b84ee0

jsp 及 相应的 classloader 实例都是新的

-verbose:class 跟踪类的加载和卸载
-XX:+TraceClassLoading 跟踪类的加载
-XX:+TraceClassUnloading 跟踪类的卸载

jvm 添加参数 -XX:+TraceClassUnloading   跟踪类的卸载

[Unloading class org.apache.jsp.clinfo_jsp 0x00000007c02d8428]
[Unloading class org.apache.jsp.clinfo_jsp 0x00000007c02d9c28]


类的卸载依赖GC , 卸载时间不确定


jcmd $PID PerfCounter.print
查看类加载数和卸载数

java.cls.loadedClasses=4096
java.cls.unloadedClasses=0


java.cls.loadedClasses=4097
java.cls.unloadedClasses=1

上一篇     下一篇
mysql MVCC 和 事务隔离级别

j2ee容器类加载机制实例演示

tomcat类加载器

分布式事务

jmeter长连接配置

java内存溢出