java类卸载机制
所属分类 java
浏览量 1671
加载、验证、准备、解析、初始化、使用、卸载
加载器 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内存溢出