java基础之—类加载器
来源:互联网 发布:初创公司如何管理 知乎 编辑:程序博客网 时间:2024/06/05 06:53
要了解类加载器先要了解类的加载
一、类的加载(类的加载概述)
当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。
1、加载
- 就是指将class文件读入内存,并为之创建一个Class对象。
- 任何类被使用时系统都会建立一个Class对象。
其中class对象也就是下一章节要将的反射的重点。
其中这个class对象描述了这个对象的所有信息,比如都有哪些构造方法,都有哪些成员方法,都有哪些字段等。
2、连接
- 验证 是否有正确的内部结构,并和其他类协调一致
- 准备 负责为类的静态成员分配内存,并设置默认初始化值
- 解析 将类的二进制数据中的符号引用替换为直接引用
就是我们以前讲过的初始化步骤
3.1 类初始化时机(class初始化时机)
- 创建类的实例
- 访问类的静态变量,或者为静态变量赋值
- 调用类的静态方法
- 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象(这就是反射,反向加载类)
- 初始化某个类的子类
- 直接使用java.exe命令来运行某个主类
二、类加载器
1、类加载器
- 负责将.class文件加载到内存中,并为之生成对应的Class对象。
- 虽然我们不需要关心类加载机制,但是了解这个机制我们就能更好的理解程序的运行。
2、类加载器的组成
- Bootstrap ClassLoader 根类加载器
- Extension ClassLoader 扩展类加载器
- Sysetm ClassLoader 系统类加载器
3、类加载器的作用
3.1 Bootstrap ClassLoader 根类加载器
也被称为引导类加载器,负责Java核心类的加载
比如System,String等。在JDK中JRE的lib目录下rt.jar文件中
比如System,String等。在JDK中JRE的lib目录下rt.jar文件中
3.2 Extension ClassLoader 扩展类加载器
负责JRE的扩展目录中jar包的加载。在JDK中JRE的lib目录下ext目录
3.3 System ClassLoader 系统类加载器
负责在JVM启动时加载来自java命令的class文件,以及classpath环境变量所指定的jar包和类路径 0 0
- java基础之—类加载器
- Java基础:类加载器
- Java基础:类加载器
- 电商之梳理java基础-类加载器---java基础
- 黑马程序员——Ⅱjava基础加强之注解与类加载器(14)
- Java基础(十五)——高新技术之内省、类加载器、动态代理
- android基础之ClassLoader类加载器
- Java基础——内省、注解、类加载器
- 黑马程序员——Java基础---类加载器
- 黑马程序员—Java基础加强(类加载器)
- java基础加强5--类加载器
- java基础加强--类加载器
- Java基础加强---ClassLoader(类加载器)
- JAVA--基础加强_类加载器
- java基础加强04 类加载器
- Java 基础加强 - 类加载器
- java基础加强_05_类加载器
- java基础__classLoader 类加载器
- Tensorflow实现卷积神经网络模型
- 解决jad.exe查看外部jar包源码失败问题
- 二分贪心05
- Quartz 2D编程指南(6) - 阴影(Shadows)
- C/C++:switch语句
- java基础之—类加载器
- 古北水镇上空的夜景,怎少的了S8的“夜视仪”?
- 实验四 DPCM编码
- 动态规划算法——知识点总结
- Quartz 2D编程指南(7) - PDF文档的创建、显示及转换
- 从斜率DP讲起
- linux安装arm-linux-gcc-4.3.2(交叉编译环境搭建)
- SQL Server审计功能入门:SQL Server审核 (SQL Server Audit)
- 一大堆excption