【学习笔记】深入理解Java虚拟机学习笔记——第9章 类加载及执行子系统的案例与实战
第9章 类加载及执行子系统的案例与实战
9.1 概述
程序能控制的主要是字节码生成与类加载器这两部分
9.2 案例分析
9.2.1 Tomcat:正统的类加载器架构
Tomcat通过不同路径及不同类加载器来实现类使用时的共享与隔离
9.2.2 OSGi:灵活的类加载器架构
通过将依赖类委派给相关类加载器来实现模块化(此时打破了双亲委派模型)
Bundle A 引用了Bundle B的公开Package时,由以上行为实现
9.2.3 字节码生成技术与动态代理的实现
动态代理接口生成代理类,在执行generateProxyClass()方法时动态生成字节码
9.2.4 Backport工具:Java的时光机器
Retrotrasslator可以使lambda与try-respirces语法转变为JDK5、6、7中的形式
9.3 实战:自己动手实现远程执行功能
1>Arthas:动态修改某一部分运行代码
2>compller API:动态编译Java程序
3>内置脚本执行引擎
4>内置动态执行功能
9.3.1 目标
P349
9.3.3 实现
P350
【Arthas如何用自己的代码访问到程序方法:
JDK1.6之后提供了JVM进程间的通信协议,使Arthas的进程可Attach到目标进程,此外JDK1.6还提供了agdent,可以代理目标进程,通过类加载机制加载字节码,可以实现动态的类替换,从而实现运行时对类的增强】