腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
深入理解JVM
共 10 篇文章
加入清单架
1
深入理解JVM(一)——JVM内存模型
2
深入理解JVM(二)——揭开HotSpot对象创建的奥秘
3
深入理解JVM(三)——垃圾收集策略详解
4
深入理解JVM(四)——对象内存的分配策略
5
深入理解JVM(五)——HotSpot垃圾收集器详解
6
深入理解JVM(六)——JVM性能调优实战
7
深入理解JVM(七)——Class文件结构
8
深入理解JVM(八)——类加载的时机
9
深入理解JVM(九)——类加载的过程
10
深入理解JVM(十)——类加载器
清单首页
深入理解JVM
文章详情
清单「深入理解JVM」 10/10
深入理解JVM(十)——类加载器
大闲人柴毛毛
类与类加载器
类加载器的作用:将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对象;
举报
领券