JVM加载机制详解(13)

2023-05-02 来源:飞速影视

4 自定义加类加载器


4.1 为什么要自定义类加载器


隔离加载类 模块隔离,把类加载到不同的应用选中。比如tomcat这类web应用服务器,内部自定义了好几中类加载器,用于隔离web应用服务器上的不同应用程序。
修改类加载方式 除了Bootstrap加载器外,其他的加载并非一定要引入。根据实际情况在某个时间点按需进行动态加载。
扩展加载源 比如还可以从数据库、网络、或其他终端上加载
防止源码泄漏 java代码容易被编译和篡改,可以进行编译加密,类加载需要自定义还原加密字节码

4.2 自定义函数调用过程


JVM加载机制详解


4.3 自定义类加载器实现


实现方式: 所有用户自定义类加载器都应该继承ClassLoader类 在自定义ClassLoader的子类是,我们通常有两种做法: 1) 重写loadClass方法(是实现双亲委派逻辑的地方,修改他会破坏双亲委派机制,不推荐) 2)重写findClass方法 (推荐)
首先,我们定义一个待加载的普通 Java 类: TestMain.class 。
public class ClassLoaderTest { public static void main(String[] args) { MyClassLoader classLoader = new MyClassLoader("d:/"); try { Class<?> clazz= classLoader.loadClass("TestMain"); System.out.println("我是由" clazz.getClassLoader().getClass().getName() "类加载器加载 的"); } catch (Exception ex) { ex.printStackTrace(); } }}
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号