如何进行classLoader卸载与JVM热部署
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇文章为大家展示了如何进行classLoader卸载与JVM热部署,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。classLoader的卸载机制jvm中没有
千家信息网最后更新 2025年11月07日如何进行classLoader卸载与JVM热部署
本篇文章为大家展示了如何进行classLoader卸载与JVM热部署,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
classLoader的卸载机制
jvm中没有提供class及classloader的unload方法.那热部署及osgi中是通过什么机制来实现的呢?实现思路主要是通过更换classLoader进行重新加载.之前的classloader及加载的class类在没有实例引用的情况下,在perm区gc的情况下会被回收掉。
perm区gc时回收掉没有引用的class是一个怎样的过程呢?
◆ perm区达到回收条件后,对class进行引用计算,对于没有引用的class进行回收。
◆ classLoader实例什么时候被回收呢?(很有可能会进入old gen).perm区回收一般情况下触发full gc是否目的就是清除没有实例引用此classloader?
内存问题
◆ 如果有实例类有对classloader的引用,perm区class将无法卸载,导致perm区内存一直增加,进而导致perm space error
public static Map pool = new HashMap(); public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException{ for (int i=0;i<10000000;i++){ test(args); } } public static void test(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { ClassLoader cl = new MyLoader(Main.class.getClassLoader()); String className = "RealPerson"; @SuppressWarnings("unchecked") Class clazz = (Class) cl.loadClass(className); Person p = clazz.newInstance(); p.setName("qiang"); pool.put(System.nanoTime(), p); cl = p.getClass().getClassLoader(); } 推测:
osgi的bundle进行热部署时有个条件:export class 必须是兼容的.否则需要重启整个应用才会生效,为什么呢?
osgi的export class是被bundle的parent classloader加载的,bundle内部其他类是bundle的classloader加载的,bundle更换后,重新创建classloader,并对bundle进行加载,之前的加载靠jmv gc回收掉。
那osgi 中explort class如果有实例引用的话,是否会导致class无法被gc掉?
如果osgi中没有做过处理,应该会出现此问题.具体osgi的实现还需要深入研究下,也许osgi中关于此部分的实现使用了jvm内部的JMTI的相关接口,来对内存的引用关系进行了修改。
上述内容就是如何进行classLoader卸载与JVM热部署,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
实例
情况
内存
内容
就是
技能
机制
条件
知识
问题
简明
简明扼要
对内
思路
接口
文章
方法
时候
更多
目的
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全本体安全
怎么进入云课堂服务器
广元网络技术哪家好
地铁网络安全等级保护
军用数据库安全性评测
深圳光谱软件开发有限公司好吗
数据库和编程的关系
关于计算机网络技术的挑战
揭阳ftp服务器找哪家
大话西游2经典版服务器推荐
阅历卡网络安全
服务器光驱怎么连接电视
艾特网络技术有限公司
数据库关系图可视化
广东税务局上传参数服务器地址
红色主题数据库设计
2019深信服网络技术大赛
无网络连接的网络安全攻防战
破坏网络安全的物理因素
竹溪服务软件开发案例
环境服务器安全吗
mmo游戏服务器 书籍
电信软件开发面试
服务器 国外品牌
国家提供的古籍数据库
软件开发有哪些热门职位
嘉兴企业软件开发培训
网络安全及网络舆情处理置
花生壳 连接服务器失败
智能家居云平台 数据库