JVM学习笔记—什么是自定义类加载的流程
1. 为什么要自定义类加载器
- 隔离加载类
- 模块隔离,把类加载到不同的应用选中。比如tomcat这类web应用服务器,内部自定义了好几中类加载器,用于隔离web应用服务器上的不同应用程序。
- 修改类加载方式
- 除了Bootstrap加载器外,其他的加载并非一定要引入。根据实际情况在某个时间点按需进行动态加载。
- 扩展加载源
- 比如还可以从数据库、网络、或其他终端上加载
- 防止源码泄漏
- java代码容易被编译和篡改,可以进行编译加密,类加载需要自定义还原加密字节码。
2. == 自定义函数调用过程==
3. == 自定义类加载器实现==
- 实现方式:
- 所有用户自定义类加载器都应该继承ClassLoader类
- 在自定义ClassLoader的子类是,我们通常有两种做法:
- 重写loadClass方法(是实现双亲委派逻辑的地方,修改他会破坏双亲委派机制,不推荐)
- 重写findClass方法 (推荐)