类编译-初始化
其他对象-调用->class对象-访问->内存(class文件的二进制)
类加载的过程
类加载的过程
图示:

类加载过程详解
类加载有三个阶段,loading、linking和initializing。其中,linking又分为三个小阶段,verification、preparation和resolution。
类加载的每一个阶段的作业都是不同的:
- loading:将class文件加载至内存。
- linking
- verification:校验class文件是否符合JVM规范;
- preparation:将静态的成员变量赋默认值;
- resolution:将类、方法、属性等符号引用解析为直接引用;常量池中的各种符号引用解析为指针、偏移量等内存地址的直接引用。
- initializing:将静态成员变量赋初始值。
load与new的区别
概述
过程 | 区别 |
---|---|
load | 默认值-初始值 |
new | 申请内存 - 默认值 - 初始值 |
详解
load的过程:将静态成员变量从赋默认值到赋初始值的。
new的过程:先申请内存,申请完内存后,将成员变量赋默认值,然后再将成员变量赋初始值。
类加载器

加载的顺序
cache:Custom ClassLoader --> App --> Extension --> Bootstrap
Bootstrap --> Extension --> App --> Cistom ClassLoader
双亲委派机制
为什么会有双亲委派机制?主要是安全问题,次要是避免重复加载。
网友评论