您的位置:首页 > 其它

深入理解JVM(十)——类加载器

2017-07-31 10:20 197 查看

类与类加载器

类加载器的作用:将class文件加载进JVM的方法区,并在方法区中创建一个java.lang.Class对象作为外界访问这个类的接口。
类与类加载器的关系:比较两个类是否相等,只有当这两个类由同一个加载器加载才有意义;否则,即使同一个class文件被不同的类加载器加载,那这两个类必定不同,即通过类的Class对象的equals执行的结果必为false。

类加载器种类

JVM提供如下三种类加载器:

启动类加载器

负责加载Java_Home\lib中的class文件。

扩展类加载器

负责加载Java_Home\lib\ext目录下的class文件。

应用程序类加载器

负责加载用户classpath下的class文件。

双亲委派模型

工作过程:如果一个类加载器收到了加载类的请求,它首先将请求交由父类加载器加载;若父类加载器加载失败,当前类加载器才会自己加载类。
作用:像java.lang.Object这些存放在rt.jar中的类,无论使用哪个类加载器加载,最终都会委派给最顶端的启动类加载器加载,从而使得不同加载器加载的Object类都是同一个。
原理:双亲委派模型的代码在java.lang.ClassLoader类中的loadClass函数中实现,其逻辑如下:
首先检查类是否被加载;
若未加载,则调用父类加载器的loadClass方法;
若该方法抛出ClassNotFoundException异常,则表示父类加载器无法加载,则当前类加载器调用findClass加载类;

若父类加载器可以加载,则直接返回Class对象;

转自:http://blog.csdn.net/u010425776/article/details/58145910
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: