三言两语说清类加载器是做什么的 实现原理是什么

一、类加载器是做什么的

1、将Class文件加载到JVM。

2、根据父级优先原则,决定一个类由谁加载。

3、将Class文件解析成JVM认识的结构。

二、类加载器的种类

1、BootstrapClassLoader,顶级类加载器,加载JVM自身需要的类。

2、ExtClassLoader,他负责加载扩展类,如jre/lib/ext或java.ext.dirs目录下的类。

3、AppClassLoader,他负责加载应用类,所有classpath目录下的类都可以被这个类加载器加载。

4、自定义类加载器,如果你要实现自己的类加载器,他的父类加载器都是AppClassLoader。

三、类加载器的继承实现关系

1、BootstrapClassLoader完全是由JVM控制,并不是父也没有子。

2、ExtClassLoader和AppClassLoader是Launcher的内部类。

3、ExtClassLoader和AppClassLoader继承了URLClassLoader。

4、URLClassLoader实现了抽象类ClassLoader。

四、隐式加载和显示加载

1、隐式加载:JVM自动加载类而不是手动编写ClassLoader代码去加载。

2、显式加载:手工编写代码加载类,例如this.getClass.getClassLoader().loadClass()

五、类加载器的三个机制

1、双亲委派:一个类加载器收到加载类的请求首先会找到自己的上一级类去加载,AppClassLoader->ExtClassLoader->BootstrapClassLoader的顺序,谁找到了负责的类谁就去加载。

2、可见性:父类加载器看不到子类加载的内容,子类加载器看得到父类加载的内容。

3、单一性:一个类只会被一个加载器加载一次。

六、加载Class文件的三个阶段

1、找到Class文件并加载字节码到内存。

2、验证字节码、分析Class类数据结构准备相应的内存分配、解析类进行符号表的链接。

3、类中静态属性和初始化赋值,执行静态块语句

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值