我在跟着[张龙老师]学习JVM 之 Java虚拟机自带的加载器

Java虚拟机自带的加载器:

  • 根类加载器(Bootstrap)
    该类加载器没有父加载器,它负责加载虚拟机的核心库,如 java.lang.* 等。java.lang.Object就是由根加载器加载的。根类加载器从系统属性 sun.boot.class.path 所指定的目录中加载类库。
    根类加载器的实现依赖于底层操作系统,属于虚拟机的实现的一部分,他并没有继承java.lang.ClassLoader类。
  • 扩展类加载器(Extension)
    它的父类是根类加载器。它从java.ext.dirs系统属性中所指定的目录中加载类库,或者从JDK的安装目录的 jre\lib\ext 子目录(扩展目录)下加载类库。
    如果用户创建的JAR文件放在这个目录下,也会被自动由扩展类加载器加载。扩展类加载器是纯java 类,是java.lang.CLassLoader类的子类。
  • 系统(应用)类加载器(System)
    系统(System) 类加载器:也称为应用类加载器,它的父加载器为扩展类加载器,它从环境变量classpath 或者系统属性java.class.path 所指定的目录中加载类。
    他是用户自定义的类加载器的默认父加载器。系统类加载器是存java 类,是java.lang.ClassLoader类的子类。
  • 类加载器的层次关系

    注意的是:他们并非继承关系,而是包含关系

posted @ 2019-11-17 10:05  不朽_张  阅读(310)  评论(0)    收藏  举报