目录
1、JVM类加载器
JVM的类加载器(Class Loader)是Java虚拟机的一个重要组成部分,负责将Java类文件加载到JVM内存中并转换成Java类模板(Class对象),供JVM执行字节码时使用。
Java虚拟机规范中定义了三种类加载器:
-
引导类加载器(Bootstrap Class Loader):负责加载Java虚拟机核心库(rt.jar等),以及其他类加载器的实现类等,通常使用C++实现,是JVM自身的一部分,不是Java类。
-
扩展类加载器(Extension Class Loader):负责加载Java虚拟机扩展库(ext目录下的jar文件),通常由Java语言实现,是一种系统级的类加载器。
-
应用程序类加载器(Application Class Loader):负责加载应用程序的类文件(classpath中指定的jar或class文件),也称为系统类加载器(System Class Loader),通常由Java语言实现。
除了这三种标准的类加载器之外,Java还提供了自定义的类加载器(Custom Class Loader),允许开发者自行实现特定的类加载器,以满足一些特殊的需求,比如动态加载类、保护代码的安全性等。
JVM的类加载器采用了委托机制,即先委托父类加载器加载类,如果父类加载器无法加载,则由子类加载器加载,这样可以保证类的唯一性和一致性,避免类的重复加载和冲突。这种机制也被称为双亲委派模型(Parent Delegation Model)。
类加载器的作用不仅限于加载类文件,还包括类的链接和初始化等,其中链接包括验证、准备和解析三个阶段,而初始化则是类加载的最后一个阶段,负责执行静态代码块和变量的初始化操作。
使用Ja