ClassLoader与类的加载

ClassLoader 是JAVA不易发现的知识点,在JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象。

Java程序并不是一个可执行文件,而是由许多独立类文件组成,每一个文件对应一个Java类。此外,这些类并非开始时全部装入内存,而是动态调入内存,即根据程序需要时加载。ClassLoader是JVM实现这个功能的主要部分。ClassLoader主要包括bootstrap classloader,ClassLoader在JVM运行时加载的Java API。

用户定义的ClassLoader主要有ExtClassLoader,AppClassLoader。ExtClassLoader作用是加载java扩展API,即/lib/ext中的类。AppClassLoader用来加载CLASSPATH设置目录中的Class,一般情况下程序员自定义类由这个ClassLoader加载。(ClassLoader不止一种,AppClassLoader最常见)

ClassLoader加载流程

运行Java程序时,JVM启动,运行bootstrap classloader,该classloader加载java核心API(也加载ExtClassLoader,AppClassLoader)然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class。


一个类加载使用父类委托模式。

1、可以避免重复加载,父类已加载该类的时候,子类ClassLoader不必再次加载。

2、安全因素。避免用户自定义string动态替代java核心API中定义的类型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值