ClassLoader

  • 类加载器分类

    java是通过类加载器,将jdk中的类,classpath下的类,或者网络上下载下来的class文件夹在到内存中去。 类加载器分几种,最顶层的是Bootstrap ClassLoader,负责加载rt.jar包中的类,其子类是ExtensionClassLoader,负责加载jdk的ext包中的所有类,ExtensionClassLoader的子类是SystemClassLoader,这个类加载器负责加载classpath下面的class文件,也就是我们自己写的类和导入的jar包。classpath告诉jvm需要在那个文件夹下面查找class文件,一个web项目的classpath是编译后的class文件所在的路径,是需要设置的。上面的类加载器都是系统帮我们实现的,但是对于一个特殊的需求并不能满足,比如那些class文件不在jdk的lib中,也不在classpath下面,tomcat就有自己的类加载器负责加载tomcat里面的class文件。

  • 双亲加载机制

    类加载器实行的是双亲加载机制,当某个具体的类加载器要加载某个类时,会委托父类加载,以此递推,一直到到bootstrap为止。可以简单的理解加载类的时候会先从最顶级的bootstrap中加载,如果未找到,那么会在其子类中寻找,一直到调用的那个具体的类加载器。这样做的好处是防止jdk中的类被覆盖,比如,用户自己定义了一个权限定名为java.lang.String的类,那么在使用类加载器中加载的时候,因为rt.jar中存在了这个类,会直接返回,所以用户定义的就不会被加载进内存中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值