东莞大型网站建设哪家好,互联网推广平台有哪些公司,长沙建设教育网官网,大型网站建设一般多少钱一、目标
类加载器#xff08;ClassLoader#xff09;是Java虚拟机#xff08;JVM#xff09;的一部分#xff0c;用于加载Java类文件到内存中#xff0c;并生成对应的Class对象。类加载器负责在运行时查找和加载类文件#xff0c;为Java程序提供动态加载和运行时扩展的…一、目标
类加载器ClassLoader是Java虚拟机JVM的一部分用于加载Java类文件到内存中并生成对应的Class对象。类加载器负责在运行时查找和加载类文件为Java程序提供动态加载和运行时扩展的功能。
二、类型
2.1、启动类加载器Bootstrap ClassLoader
也称为根加载器它是JVM内嵌的加载器负责加载Java核心类库如java.lang包中的类和其他需要在JVM启动时就被加载的类。它是所有其他类加载器的父加载器。由于是用C实现的因此在Java代码中无法直接获取到启动类加载器的引用。
2.2、扩展类加载器Extension ClassLoader
它是由sun.misc.Launcher$ExtClassLoader实现的负责加载Java的扩展类库如javax包中的类。它是由启动类加载器加载的并且是应用类加载器的父加载器。
2.3、应用类加载器Application ClassLoader
也称为系统类加载器它是由sun.misc.Launcher$AppClassLoader实现的负责加载应用程序的类。应用类加载器是用户自定义的类加载器的默认父加载器。
三、加载策略
3.1、问题
解决类的加载顺序、一致性、可靠性、唯一性等
3.2、双亲委派机制
双亲委派机制Delegation Model是Java类加载器的一种加载策略它定义了类加载器在加载类时的行为和优先级。
双亲委派机制的基本思想是当一个类加载器需要加载一个类时它首先将加载请求委派给父类加载器只有当父类加载器无法加载该类时才由自身加载器进行加载。这个过程会一直循环直到顶层的启动类加载器。如果所有的父类加载器都无法加载该类最终由子类加载器加载。
3.3、优势
1、避免类的重复加载每个类加载器都有自己的命名空间当父类加载器已经加载了一个类子类加载器无需重新加载直接使用父类加载器加载的类避免了重复加载。
2、提供类加载的安全性和一致性通过双亲委派机制类加载器会沿着加载链向上委派加载请求保证了加载的类来自于同一个源确保了类的安全性和一致性。
3、确保核心类的一致性由启动类加载器加载的核心类库是Java虚拟机的一部分能够保证在不同的Java应用中加载的核心类库是一致的。
需要注意的是双亲委派机制并不是强制性的可以通过自定义类加载器绕过双亲委派机制实现特定的加载逻辑例如热部署等需求。
双亲委派机制在Java中的应用非常广泛不仅用于加载Java核心类库还用于加载应用程序的类。它确保了类的加载按照优先级和一致性进行提供了类加载的可靠性和安全性。