Java基础(3)------类加载器

简介

java虚拟机中的类加载器负责加载来自文件系统、网络或其余来源的类文件,默认使用的是双亲委派模式,有如下三种默认的类加载器:java

  • Bootstrap ClassLoader:它是全部类加载器的父加载器,它没有任何父加载器,它负责加载rt.jar(是JAVA基础类库,即咱们在java文档里面看到的class)
  • Extension ClassLoader:负责加载 Java 的扩展类库,也就是从jre/lib/ext目或者java.ext.dirs系统属性指定的目录下加载类.(好比 swing 系列、内置的 js 引擎、xml 解析器 等等,这些库名一般以 javax 开头,它们的 jar 包位于 JAVA_HOME/lib/ext/*.jar 中,有不少 jar 包)
  • System ClassLoader负责从classpath变量中加载类文件(由Jar中Manifest文件的classpath属性指定),它是Extension ClassLoader的子加载器。

双亲委派模式

  • 在加载类文件的时候,子加载器会先将请求委托给它的父加载器,父加载器会检测是否已经加载过此类,若是加载过此类这次加载就已经结束,若是没有的话,继续请求,直至Bootstrap ClassLoader类,若是仍是没有,若是再次加载失败,就会使用子加载器架子啊,直至发起请求的子加载器位置
  • 该模式的主要特色为亮点:
  1. 子加载器能够使用父加载器已经加载的类,而父加载器没法使用子加载器加载的类
  2. 父加载器加载过的类没法被子加载器再次加载
相关文章
相关标签/搜索