java类加载器

启动类加载器

启动类加载器是Java虚拟机中最基础的类加载器,它主要负责加载第一个被虚拟机执行的特殊类——java.lang.ClassLoader,该类在虚拟机启动时被加载,并提供了所有其它类加载器的基础,也就是说,所有的类加载器都直接或者间接地继承自这个类。

启动类加载器由C++语言实现,并不是Java语言实现。此外,在Java中也无法通过代码获取到该类加载器对象的引用。

扩展类加载

扩展类加载器是用来加载Java系统扩展库的类加载器,负责加载$JAVA_HOME/lib/ext目录下的类库。扩展类加载器是在启动类加载器之后启动的,它也是纯Java代码实现的类加载器。

在Java中,扩展类加载器的父加载器是启动类加载器。这种方式保证了系统类库在运行时的稳定性和安全性。

应用程序类加载器

应用程序类加载器是应用程序中默认的类加载器。它主要负责加载应用程序classpath下的类,也就是我们平时自己写的Java代码所编译出来的.class文件。

双亲委派机制

Java的类加载机制采用的是双亲委派模型,这是一种经典的类加载机制,也是Java的类加载机制得以广泛使用的重要原因之一。

所谓“双亲委派”,就是在类加载的过程中,一个类加载器在加载某个类时,会先委托给它的父类加载器进行加载。如果父类加载器无法加载成功,再由自己来加载该类。这样做的好处在于,保证Java虚拟机安全、稳定地运行,避免出现恶意代码污染系统。

在Java中,类加载器会一直询问其父加载器是否能够加载某个类,直到达到启动类加载器(即基类加载器)时,如果该类还没有被加载,此时才交由启动类加载器去加载这个类。因为启动类加载器是由Java虚拟机自身实现的,任何类都可以使用它来进行加载,所以启动类加载器就成为了Java虚拟机中的“保护神”。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_38041697

请各位老板打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值