热门

最新

红包

立Flag

投票

同城

我的

发布
as4589sd
阿啄debugIT
5 年前
trueas4589sd

1.类的加载(加载到JVM), class文件通过类加载器加载到内存。

类加载全过程:加载Class对象---连接(1.验证(安全和规范),2.准备(分配内存),3.解析(将类中的符号引用转换成直接引用))---初始化---使用---卸载

类加载器使用的加载模式:双亲委托机制

1、当AppClassLoader加载一个class时,它首先不会自己去尝试加载这个类,而是把类加载请求委派给父类加载器ExtClassLoader去完成。
2、当ExtClassLoader加载一个class时,它首先也不会自己去尝试加载这个类,而是把类加载请求委派给BootStrapClassLoader去完成。
3、如果BootStrapClassLoader加载失败(例如在$JAVA_HOME/jre/lib里未查找到该class),会使用ExtClassLoader来尝试加载;
4、若ExtClassLoader也加载失败,则会使用AppClassLoader来加载
5、如果AppClassLoader也加载失败,则会报出异常ClassNotFoundException

类加载器:

BootStrapClassLoader 启动类加载器 负责jre/lib/rt.jar
ExtClassLoader 扩展类加载器 jre/lib/*.jar或-Djava.ext.dirs
AppClassLoader 应用类加载器 记载classpath中指定的jar包及目录中class
UserClassLoader 自定义的类加载器 继承ClassLoader getClass().ClassLoader()可以获得

CSDN App 扫码分享
分享
评论
4
打赏
  • 复制链接
  • 举报
下一条动态
立即登录