论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
物联网
›
物联网
›
类加载器你不知道的东西
类加载器你不知道的东西
莱莱
论坛元老
|
2024-6-10 19:47:51
|
显示全部楼层
|
阅读模式
楼主
主题
1951
|
帖子
1951
|
积分
5853
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
类加载:通过一个类的全限定名来获取描述此类的二进制字节省,将二进制流加载到内存中,并转换为可执行的Java字节码。
一、双亲委派模型
概念:如果一个类加载器收到一个类加载的哀求,它首先不会自己加载,而是把这个哀求委派给父类加载器。只有父类无法完成加载时子类才会尝试加载。这就叫做双亲委派模型。
不同的加载器可以加载同名但不同版本的类,从而避免类辩论。
类加载器可以加载类文件、图片、配置文件等。
除顶层启动类加载器之外,其他都有自己的父类加载器。
//获取一个类的类加载器
Class.getClassLoader()
//获取一个类加载器的父类加载器
ClassLoader.getParent()
从 Java 假造机角度讲,只存在2种类加载器:
1.启动类加载器(C++ 实现,是假造机的一部分)。
2.其他所有的类的加载器(Java实现,独立于假造机外部且继承自java.lang.ClassLoader)。
从类加载器继承角度讲,存在如下4种类加载器:
1.启动类加载器(Bootstrap ClassLoader,也称根类加载器)
加载 $JAVA_HOME/jre/lib 下或 -Xbootclasspath 路径下的类。
2.扩展类加载器(Extension ClassLoader)
加载 $JAVA_HOME/jre/lib/ext 或 java.ext.dirs 体系变量所指定的路径下的类。
此类加载器以启动类加载器为父加载器。
3.应用程序类加载器(Application ClassLoader,也称体系类加载器)
负责加载用户路径下所指定的类库。
此类加载器以扩展类加载器为父加载器。
4.自界说类加载器
自界说类加载器(继承自java.lang.ClassLoader)可以实现类的动态加载、动态更新以及热部署等高级特性。
可通过继承java.lang.ClassLoader类并重写findClass来实现自界说的类加载逻辑。
二、粉碎双亲委派模型
1.ClassLoader.loadClass()方法粉碎了双亲委派模型,更推荐利用ClassLoader.findClass()方法来实现符合双亲委派模型的类加载逻辑。
2.线程上下文类加载器(Thread Context ClassLoader)
JNDI(Java Naming and Directory Interface)利用线程上下文类加载器去加载所需的SPI(Service Provider Interface)代码。这使父类加载器哀求子类加载器完成类加载的举动,粉碎了双亲委派模型的布局。
3.OSGi(Open Service Gateway initiative)实现模块化热部署时,接纳了自界说的类加载器机制,这粉碎了双亲委派模型。
三、引申
类加载器不必要等到某个类被"初次主动利用"时才加载它,JVM 规范允许类加载器在猜测到某个类将要被利用时就提前预先加载它。如果在预先加载的过程中遇到了.class 文件缺失错误,类加载器必须在程序初次主动利用该类时抛出错误(LinkageError 错误)。如果这个类不绝没有被程序主动利用,那么类加载器就不会抛出错误。
微风不燥,阳光恰好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有资助,请关注、分享、点赞、收藏、在看、喜好,您的支持是我们为您提供资助的最大动力。
欢迎关注。助您在编程路上越走越好!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
莱莱
论坛元老
这个人很懒什么都没写!
楼主热帖
SQL的约束
HCIA-OSPF协议
mac Error: EACCES: permission denied ...
MySQL 隐式类型转换导致索引失效问题 ...
你选对了超融合,可能却买错了交换机! ...
红标devcpp6.3编译器下载及配置教程 ...
攻防世界web 难度1新手练习
MySQL实战45讲 9
每日一练 数据库linux安装
老妈问我什么是超融合,我是这么和她解 ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
Java
云原生
MES
虚拟化与私有云
人工智能
快速回复
返回顶部
返回列表