聊聊类加载机制

Posted miduos

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聊聊类加载机制相关的知识,希望对你有一定的参考价值。

  • 类加载机制,谈到双亲委派模型后会问到哪些违反了双亲委派模型?为什么?为什么要双亲委派?好处是什么?

 

常见的三种类加载器

 

启动器 Bootstrap  c++编写的 jvm的一部分 开发者无法直接获取

 

标准扩展加载器类  Sun java的类库扩展包加载到内存 

 

应用程序加载器 程序的类加载器

 

 

特殊的 线程上下文类加载器

 

继承应用程序加载器的用户自定义加载器

 

 

为什么使用?

 

防止内存中出现多份同样的字节码 、安全性

 

 

破坏jvm 

第一次兼容

 

第二次 JNDI服务:JNDI的目的就是对资源进行集中管理和查找,它需要调用独立厂商实现部部署在应用程序的classpath下的JNDI接口提供者(SPI, Service Provider Interface)的代码。

 

第三次 osgi 一个模块一个类加载器

 

 

另外tomcat 奇特的双亲委派

WebappClassLoader内部重写了loadClass和findClass方法,实现了绕过“双亲委派”直接加载web应用内部的资源,当然可以通过在Context.xml文件中加上开启正统的“双亲委派”加载机制

为什么要这样做?

https://blog.csdn.net/qq_38182963/article/details/78660779

 

 

 

 

以上是关于聊聊类加载机制的主要内容,如果未能解决你的问题,请参考以下文章

从Java的类加载机制谈起:聊聊Java中如何实现热部署(热加载)

Java中常见的类加载器及双亲委派机制的原理

Java中常见的类加载器及双亲委派机制的原理

一文读懂Java类加载机制

tomcat学习笔记Tomcat类加载机制

tomcat学习笔记Tomcat类加载机制