JAVA语言之类与类加载器的使用学习
小标 2018-12-04 来源 : 阅读 939 评论 0

摘要:本文主要向大家介绍了JAVA语言之类与类加载器的使用学习,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言之类与类加载器的使用学习,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


类与类加载器:每一个类加载器,都拥有一个独立的类名称空间。比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义。


从java虚拟机角度划分类加载器:1.启动类加载器,是虚拟机自身的一部分


2.所有其他的类加载器,独立于虚拟机外部,并且全都继承自抽象类java.lang.ClassLoader


进一步细致划分:1.启动类加载器/引导类载入器(将虚拟机启动需要的类库加载到虚拟机内存中。启动类加载器无法被java程序直接引用)


2.扩展类加载器(加载lib目录下的类库,开发者可直接使用扩展类加载器)


3.应用程序类加载器/系统类载入器(程序默认的类加载器,开发者可直接使用)


-----------------------------------------------------------------------------------



类加载器之间的这种层次关系称为类加载器的双亲委派模型。


双亲委派模型要求除了顶层的启动类加载器之外,其余的类加载器都应当有自己的父类加载器。这里的父子关系一般不会以继承的关系实现,而是以组合关系来复用父加载器代码。


双亲委派模型的工作过程:如果一个类加载器收到了类加载的请求,它首先不会自己去加载这个类,而是把这个请求委派给父类加载器去完成,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器无法加载时,子加载器才会尝试自己去加载。


优点:java类随着它的类加载器一起具备类一种带有优先级的层次关系。例如java.lang.Object,最终都是委派给处于模型最顶端的启动类加载器进行加载,因此object类在程序各种类加载器环境中都是同一个类。双亲委派模型对于保证java程序的稳定运作很重要,很好的解决了各个类加载器的基础类的统一问题。


-----------------------------------------------------------------------------------


破坏双亲委派模型


例1:线程上下文类加载器。父类加载器请求子类加载器去完成类加载的动作,逆向使用类加载器。比如java中jndi、jdbc、代码热替换、模块热部署等


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程