19.类加载机制
- 什么是类加载机制
- JVM在执行class文件时所做的一系列工作
- 包括内容有
- 装载:通过类的完全限定名,找到class文件,然后导入jvm中,并创建需要的Class对象
- 链接
- 验证:验证class文件的完整安全(因为class是可以被修改的,可能会对JVM产生威胁)
- 准备:为类的静态成员分配内存空间,设计初始化默认值(如,int a默认值是0)
- 解析:将符号引用转换为直接引用
- 初始化:真开始执行类中定义的JAVA程序代码:对类的静态变量,静态代码块执行初始化操作(如,程序中int a初始值是3,此时就会把3赋值给a)
- 说明
- :反射就是把java类中各个成分映射成一个个Java对象,在类装载时完成
- 装载工作是由类加载器完成的
- Bootstrap ClassLoader 根类加载器
也被称为引导类加载器,负责Java 核心类的加载
比如System,String 等。在JDK 中JRE 的lib 目录下rt.jar 文件中
- Extension ClassLoader 扩展类加载器
负责JRE 的扩展目录中jar 包的加载
在JDK 中JRE 的lib 目录下ext 目录
- Sysetm ClassLoader 系统类加载器
负责在JVM 启动时加载来自java 命令的class 文件,以及classpath环境变量所指定的jar 包和类路径
- class文件在jvm中的生命周期(总共七个)
- 类加载机制的5个过程
- 使用
- 卸载
- 类加载时机(什么时候JVM开始执行某个类的加载呢?)
- 创建类的实例
- 使用new关键字创建实例
- 通过反射创建实例
- 访问类的静态变量,或者为静态变量赋值
- 调用类的静态方法
- 使用反射方式来强制创建某个类或接口对应的java.lang.Class 对象
- 初始化某个类的子类,初始化子类的时候,该子类的所有父类都会被初始化
- 当程序主动使用任何一个类时,系统会保证该类以及所有的父类都会被初始化
- 直接使用java.exe 命令来运行某个主类
- 图解
- 类加载机制的作用
- 为了:JVM执行class文件(jvm运行java程序)
- 类加载机制的使用
- 我们只需要了解这一过程即可
- 它是由JVM自动完成
原文地址:https://www.cnblogs.com/River111/p/9716602.html