博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java系列---认识classLoader
阅读量:6139 次
发布时间:2019-06-21

本文共 903 字,大约阅读时间需要 3 分钟。

作用:将class文件加载到内存中

BootStrap ClassLoader:称为启动类加载器

由C++编写没有父类加载器负责加载JDK中的核心类库    JAVA_HOME\jre\lib\resources.jar;    JAVA_HOME\jre\lib\rt.jar;    JAVA_HOME\jre\lib\sunrsasign.jar;    JAVA_HOME\jre\lib\jsse.jar;    JAVA_HOME\jre\lib\jce.jar;    JAVA_HOME\jre\lib\charsets.jar;    JAVA_HOME\jre\lib\jfr.jar;    JAVA_HOME\jre\classes复制代码

Extension ClassLoader:称为扩展类加载器

默认加载JAVA_HOME/jre/lib/ext/目下的所有jar复制代码

App ClassLoader:称为系统类加载器

负责加载应用程序classpath目录下的所有jar和class文件复制代码

自定义类加载器

必须继承自java.lang.ClassLoader类复制代码

双亲委派模型

每个ClassLoader实例都有一个父类加载器的引用(不是继承的关系,是一个包含的关系)可以避免重复加载JVM在判定两个class是否相同时,不仅要判断两个类名是否相同,而且要判断是否由同一个类加载器实例加载的。只有两者同时满足的情况下,JVM才认为这两个class是相同的。尝试加载类的顺序:    BootstrapClassLoader-->ExtensionClassLoader-->App ClassLoader-->custom ClassLoader检查类是否已经加载的顺序:    custom ClassLoader-->App ClassLoader-->ExtensionClassLoader-->BootstrapClassLoader复制代码

转载于:https://juejin.im/post/5bf66a4ef265da61542d435a

你可能感兴趣的文章
java连接MySql数据库
查看>>
转:Vue keep-alive实践总结
查看>>
深入python的set和dict
查看>>
C++ 11 lambda
查看>>
Hadoop2.5.0 搭建实录
查看>>
实验吧 recursive write up
查看>>
Android JSON数据解析
查看>>
DEV实现日期时间效果
查看>>
java注解【转】
查看>>
Oracle表分区
查看>>
centos 下安装g++
查看>>
嵌入式,代码调试----GDB扫盲
查看>>
类斐波那契数列的奇妙性质
查看>>
配置设置[Django]引入模版之后报错Requested setting TEMPLATE_DEBUG, but settings are not configured....
查看>>
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
Wait Functions
查看>>
代码描述10313 - Pay the Price
查看>>
jQuery最佳实践
查看>>
centos64i386下apache 403没有权限访问。
查看>>