class文件装载流程:
--加载(使用
ClassLoader)
取得类文件的
二进制流
将
二进制流转为方法区数据结构
在JVM堆中生成对应的Class对象
-- 链接
验证(文件格式、是否有父类?继承final类?)
准备 (在
方法区中分配内存,初始值,
static修饰分配内存,
final修饰赋值)
解析(
字符串常量替换成内存地址)
-- 初始化
static变量、static语句
赋值
ClassLoader抽象类:
作用:将Java字节码文件装入jvm内存
方法:loadClass findClass defineClass findLoadedClass
ClassLoader双亲委派模型:
加载过程:类加载时,子加载委派给父加载器先加载
-- 自底向上检查类是否已经加载
-- 自顶向下加载类
双亲委派模型执行流程: