JVM类加载器

JVM中有三个重要的类加载器

BootstrapClassLoader(启动类加载器):最顶层的类加载器,由C++实现,负责加载%JAVA_HOME%/lib目录下的jar包和类。
ExtensionClassLoader(扩展类加载器):主要负责加载%JAVA_HOME%lib/ext目录下的jar包和类。
AppClassLoader(应用程序类加载器):面向用户的类加载器,负责加载当前应用下Classpath下的所有jar包和类。

双亲委派模型

类加载之间的”父子“关系不是由继承来体现的,而是由”优先级“来体现的。
向上是为了检查类是否被加载,可以使类不会被重复加载。

在类加载的时候,系统首先会判断当前类是否被加载过,已经被加载的类会直接返回,否则才会尝试加载。加载的时候,首先会将请求委派给父类加载器的LoadClass()处理,因此所有类加载请求都会传到启动类加载器(BootStrapClassLoader),当父类加载器无法处理时,才由自己来处理,当父类加载器为NUll时,会使用启动类加载器(BootStrapClassLoader)作为父类加载器。
在这里插入图片描述

除了BootStrapClassLoader,其他类加载器均是由Java实现且全部继承自Java,lang.ClassLoader.
当我们不想用双亲委派模型的时候,可以自己定义一个类加载器,继承ClassLoader重写loadClass()即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值