Java类加载器(ClassLoader)1
需积分: 0 36 浏览量
更新于2022-08-03
收藏 691KB PDF 举报
Java类加载器(ClassLoader)是Java虚拟机(JVM)的核心组成部分,负责将类的字节码转换为可运行的Java对象。Java类加载器分为三种主要类型:引导类加载器(Bootstrap ClassLoader)、扩展类加载器(Extension ClassLoader)和应用程序类加载器(Application ClassLoader,也称为系统类加载器)。它们共同工作,确保了Java应用程序能够正确地找到并加载所需的类。
1. 引导类加载器(Bootstrap ClassLoader):
- 由C/C++实现,内嵌于JVM中。
- 负责加载Java核心库,如rt.jar、resources.jar以及sun.boot.class.path路径下的类。
- 不继承自java.lang.ClassLoader,没有父加载器。
- 它仅加载以java、javax、sun等开头的基础包类。
2. 扩展类加载器(Extension ClassLoader):
- 用Java编写,实现为sun.misc.Launcher$ExtClassLoader。
- 继承自ClassLoader,父类加载器为引导类加载器。
- 从java.ext.dirs系统属性指定的目录或JRE的lib/ext子目录加载类库。
- 如果用户将JAR文件放入此目录,将自动由扩展类加载器加载。
3. 应用程序类加载器(Application ClassLoader,System ClassLoader):
- 用Java实现,实现为sun.misc.Launcher$AppClassLoader。
- 也是ClassLoader的子类,父类加载器为扩展类加载器。
- 负责加载环境变量classpath或系统属性java.class.path指定路径下的类库。
- 是默认的类加载器,一般Java应用的类由它加载。
**自定义类加载器**:
- 用户可以通过继承java.lang.ClassLoader或URLClassLoader来自定义加载逻辑。
- 自定义加载器通常用于隔离加载类、改变加载方式、扩展加载源、防止源码泄露等场景。
- 实现自定义类加载器时,建议在JDK1.2后重写findClass()方法而非loadClass(),以避免复杂的操作。
**常用方法**:
- `getParent()`:返回当前类加载器的父类加载器。
- `forName(String className)`:根据类名动态加载并初始化类。
- `loadClass(String name)`:根据类名加载类,但不初始化。
理解类加载器的工作机制对于进行JVM优化、插件开发、安全控制等高级Java应用至关重要。通过自定义类加载器,开发者可以控制类的加载过程,满足特定需求,比如模块化系统、热部署等。
今年也要加油呀
- 粉丝: 26
- 资源: 312
最新资源
- 云计算,搭建分布式,然后实现Titantic数据集训练、分类的的代码
- 同城宠物照看-JAVA-基于Spring Boot的同城宠物照看系统的设计与实现(毕业论文)
- 云计算,实现中文字频统计代码,课程设计
- weixin138社区互助养老+ssm(论文+源码)-kaic.zip
- 扶贫助农系统-JAVA-基于spring boot扶贫助农系统设计与实现(毕业论文)
- 母婴护理知识共享-JAVA-基于SpringBoot+vue 的母婴护理知识共享系统(毕业论文)
- 番茄叶片图像病害多标签分类,约5600张数据
- 影音互动科普网站-JAVA-基于SpringBoot的哈利波特书影音互动科普网站设计与实现(毕业论文)
- 航空散货调度-JAVA-基于SpringBoot的航空散货调度系统设计与实现(毕业论文)
- 基于Python Scrapy的贝壳找房爬虫程序
- zigbee CC2530无线自组网协议栈实现一个协调器+多个终端的通讯及控制.zip
- 校园二手物品交易-JAVA-基于springBoot的校园二手物品交易系统的设计与实现(毕业论文)
- 计算机视觉项目:Swin-Transformer 【tiny、small、base】模型实现的图像识别项目:番茄病害图像分类
- 功能完善的电商数据智能爬虫采集系统项目全套技术资料.zip
- 青少年心理健康教育网-JAVA-基于springboot的青少年心理健康教育网站的设计与实现(毕业论文)
- 密评流程及商密应用方案解析