为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA为什么要有多个类加载器,1个不行吗

JAVA为什么要有多个类加载器,1个不行吗

扬帆大鱼 2019-05-14 11:26:28
JAVA为什么要有多个加载器我知道加载器作用是通过类名来获取二进制字节流。主要分为四种加载器,启动类->扩展类->应用类->自定义类。我也知道双亲委派机制的好处,就是越基础的类交给越高级的加载器加载。我问题是只有一个加载器来加载全部的类不行吗,这样的话也就不存在什么不使用双亲委派机制的问题了还是不懂
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

思考以下情景:
首先,是为了区分同名的类:假定存在一个应用服务器,上面部署着许多独立的应用,同时他们拥有许多同名却不同版本的类库。试想,这时候jvm该怎么加载这些类同时能尽可能的避免掉类加载时对同名类的差异检测呢?当然是不同的应用都拥有自己独立的类加载器了。
其次,是为了更方便的加强类的能力:类加载器可以在loadclass时对class进行重写和覆盖,在此期间就可以对类进行功能性的增强。比如添加面向切面编程时用到的动态代理,以及debug等原理。怎么样达到仅修改一个类库而不对其他类库产生影响的效果呢?一个比较方便的模式就是每个类库都可以使用独立的类加载器
小结:jvm需要有不同的类加载器,因为它一方面允许你在一个jvm里运行不同的应用程序,另一方面方便你独立的对不同类库进行运行时增强。
                            
查看完整回答
1 反对 回复 2019-05-14
  • 2 回答
  • 0 关注
  • 470 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号