深入JVM内核——原理、诊断与优化第6周
法律声明
【声明】本视频和幻灯片为炼数成金网络课程的教学资料,所有资料只能在课程内使用,不得在课程以外范围散播,违者将可能被追究法律和经济责任。
课程详情访问炼数成金培训网站
http://edu.
类装载器
class装载验证流程
什么是类装载器ClassLoader
JDK中ClassLoader默认设计模式
打破常规模式
热替换
class装载验证流程
加载
链接
验证
准备
解析
初始化
class装载验证流程-加载
装载类的第一个阶段
取得类的二进制流
转为方法区数据结构
class装载验证流程-链接验证
链接-> 验证
目的:保证Class流的格式是正确的
文件格式的验证
是否以0xCAFEBABE开头
版本号是否合理
元数据验证
是否有父类
继承了final类?
非抽象类实现了所有的抽象方法
字节码验证(很复杂)
运行检查
栈数据类型和操作码数据参数吻合
跳转指令指定到合理的位置
符号引用验证
常量池中描述类是否存在
访问的方法或字段是否存在且有足够的权限
class装载验证流程-链接准备
链接-> 准备
分配内存,并为类设置初始值(方法区中)
public static int v=1;
在准备阶段中,v会被设置为0
在初始化的<clinit>中才会被设置为1
对于static final类型,在准备阶段就会被赋上正确的值
public static final int v=1;
class装载验证流程- 链接解析
链接-> 解析
符号引用替换为直接引用
字符串
引用对象不一定被加载
指针或者地址偏移量
引用对象一定在内存
class装载验证流程–初始化
执行类构造器<clinit>
static变量赋值语句
static{}语句
子类的<clinit>调用前保证父类的<clinit>被调用
<clinit>是线程安全的
class装载验证流程
06.类装载器 来自淘豆网www.taodocs.com转载请标明出处.