JVM 深入理解 (四) | 类加载器

  • JAVA编程
  • 2020-08-22 21:38:22
  • 浏览 89
简介人活著就是為了解決困難。這才是生命的意義,也是生命的內容。逃避不是辦法,知難而上往往是解決問題的最好手段

加载器的分类

JVM 支持两种类型的类加载器,分别为引导类加载器 (BootStrap ClassLoader) 和 自定义类加载器 (User-Defined ClassLoader),所有派生于抽象类 ClassLoader 的类加载器都划分为自定义类加载器。

引导类加载器(BootStrap ClassLoader)

1.这个类加载器使用 C/C++ 语言实现的,嵌套在 JVM 内部。

2.它用来加载 Java 的核心库( JAVA_HOME/jre/lib/rt.jar 、resource.jar 或 sun.boot.class.path 路径下的内容 ),用于提供 JVM 自身需要的类

3.并不继承 java.lang.ClassLoader ,没有父加载器

4.出于安全考虑,BootStrap 启动类加载器只加载包名为 java、javax、sun 等开头的类

扩展类加载器(Extension ClassLoader)

1.Java 语言编写,由 sun.misc.Launcher$ExtClassLoader 实现

2.派生于 ClassLoader 类

3.父类加载器为启动类加载器

4.从 java.ext.dirs 系统属性所指定的目录中加载类库,或从 JDK 安装目录的 jre/lib/ext 子目录(扩展目录)下加载类库。如果用户创建的 JAR 放在此目录下,也会自动由扩展类加载器加载

用户自定义类加载器(用途)

1.隔离加载类

2.修改类的加载方式

3.扩展加载源

4.防止源码泄漏

文章评论