Java虚拟机30个常用知识点之5——类加载器

当我们执行java程序的时候,并不是直接加载包含main方法的那个类,而是先由bootstrap classloader加载rt.jar及其他相关class文件,rt.jar中的class文件是java程序最常用的java文件,然后ext classloader会加载一些扩展类文件,最后呢就是app classloader类加载用户自己的类文件,从包含main方法的那个类文件开始加载。

双亲委派模型

简单来说就是每个类文件都会有一个类加载器,每个类加载器都会有一个父类加载器(bootstrap classloader除外),每当类加载器要加载类的请求时,会先将加载类的请求交给它的父类处理,这里面有递归关系,父类处理不了(在其处理范围内未找到该类),就一层一层的将加载请求传回来。

为什么要这么做

首先,我们要知道不同的类加载器加载的类是不同的,即使加载的是同一个类。若没有这种机制,app1 classloader加载的java.lang.Object类和app2 classloader加载的java.lang.Object类就是不同的,这显然是不对的。而运用双亲委派模型这种机制,就可以保证java.lang.Object类最终都是由bootstrap classloader加载的,这就保证了java.lang.Object类的一致性。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值