JVM 只会运行二进制文件,类加载器的作用就是将字节码文件加载到 JVM 中。通过加载字节码数据放入内存转换成 byte[]
(二进制字节流),接下来调用虚拟机底层方法将 byte[]
转换成方法区和堆中的数据。
由 Hotspot 虚拟机提供,使用 C++ 编写,默认加载 Java 安装目录 /jre/lib
下的类文件,比如 rt.jar
,tools.jar
,resources.jar
等
默认加载的是 JDK 安装目录中的 /jre/lib/ext
下的类文件,公用的但不是特别重要
加载项目中生成的字节码文件和第三方依赖中的字节码文件
在 Java 9 以及之后的版本,类加载器发生了比较大的变化。首先所有的类加载器都由 C++ 语言进行编写;其次,为了更好地适应模块化的新特性,扩展类加载器改为了平台类加载器;之前的应用程序类加载器和自定义类加载器依然保留。