摘要: class文件热加载,即不重启生效方法 1、自定义classLoader 独立线程监控class文件变化,一旦变化 重新new一个classLoader加载class ,老的class对象 老的classLoader需要去除引用,等待GC后自动卸载 2、JavaAgent 探针技术 ,重新定义已经加 阅读全文
posted @ 2020-06-28 22:04 蓝天随笔 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 一、场景 JavaAgent Java代理,又叫java探针,可以动态的改变加载的字节码文件 通常使用ASM Javasist字节码工具修改class文件 二、使用 2种方式 静态方式: 通过-javaagent 指定代理类 (在main方法执行前执行premain方法) 动态方法:通过额外的进程a 阅读全文
posted @ 2020-06-28 21:50 蓝天随笔 阅读(1186) 评论(0) 推荐(0) 编辑
摘要: 一、类的双亲委托 Bootstrap(启动)类加载器,它负责加载 <Java_Runtime_Home>/lib下面的类库加载到内存中,由于启动类加载器涉及到虚拟机底层实现细节,开发者无法直接拿到其引用,因此使用Class.getClassLoader() 的结果为 null,因此如果获取的Clas 阅读全文
posted @ 2020-06-28 21:14 蓝天随笔 阅读(930) 评论(0) 推荐(0) 编辑
摘要: 一、生命周期 加载 连接 初始化 只是启动顺序,启动后可能交叉执行。 二、加载 加载class文件,class文件是JVM的规范,跟java没有强依赖。 可能来源:class文件、网络传输等 加载后会在堆中生成Class对象。 三、验证 验证字节码的格式、规范等,如class文件必然4个字节的魔数0 阅读全文
posted @ 2020-06-28 20:46 蓝天随笔 阅读(292) 评论(0) 推荐(0) 编辑