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

繁花如伊
TA贡献2012条经验 获得超12个赞
思考以下情景:首先,是为了区分同名的类:假定存在一个应用服务器,上面部署着许多独立的应用,同时他们拥有许多同名却不同版本的类库。试想,这时候jvm该怎么加载这些类同时能尽可能的避免掉类加载时对同名类的差异检测呢?当然是不同的应用都拥有自己独立的类加载器了。其次,是为了更方便的加强类的能力:类加载器可以在loadclass时对class进行重写和覆盖,在此期间就可以对类进行功能性的增强。比如添加面向切面编程时用到的动态代理,以及debug等原理。怎么样达到仅修改一个类库而不对其他类库产生影响的效果呢?一个比较方便的模式就是每个类库都可以使用独立的类加载器小结:jvm需要有不同的类加载器,因为它一方面允许你在一个jvm里运行不同的应用程序,另一方面方便你独立的对不同类库进行运行时增强。
添加回答
举报
0/150
提交
取消