JVM(二)--- 类加载子系统
目录
前言
一、类加载过程
1. loading阶段
2. Linking阶段
2.1 验证
2.2 准备
2.3 解析
3. Initialization阶段
二、类加载器
1. 类加载器的分类
2. 用户自定义类加载器
三、双亲委派机制
四、其他知识点
前言
JVM的内存结构如图所示:
一、类加载过程
1. loading阶段
2. Linking阶段
2.1 验证
正确的class文件开头包含CA FE BA BE标识,如果文件不符合要求就会抛出错误。
2.2 准备
2.3 解析
符号引用:编译时生成的一组文本符号,用来描述目标(比如类、方法或者字段)。
直接引用:能直接指向目标在内存中位置的指针、偏移量或者句柄。
3. Initialization阶段
在初始化阶段,会给类变量和静态变量进行赋值。<clinit>是一个方法,不同于类构造器<init>。
二、类加载器
1. 类加载器的分类
对于用户自定义类来说,默认使用系统类加载器进行加载。Java的核心类库都是使用引导类加载器进行加载的(例如String类)。
2. 用户自定义类加载器
三、双亲委派机制
优势: