摘要:本文主要向大家介绍了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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号