java类结构及加载
2021-01-26 11:41:53 1 举报
java类结构及加载
作者其他创作
大纲/内容
连接阶段
准备
验证
方法表集合
解析
双亲委派模型
解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程
u4:魔法数字 CAFEBABE
类文件结构
加载
加载时机
接口加载过程与类加载过程稍有不同。当一个类在初始化时,要求其父类全部都已经初始化过了,但是一个接口在初始化时,并不要求其父接口全部都完成了初始化,当真正用到父接口的时候才会初始化。
文件格式验证元数据验证字节码验证符号引用验证
类成员变量初始默认0数值存在“特殊情况”:如果类字段的字段属性表中存在 ConstantValue 属性,那么在准备阶段 value 就会被初始化为 ConstantValue 属性所指定的值
常量池
属性表集合
字段表集合
u2:minor versionu2:major version
初始化
使用
类索引、父类索引、接口索引集合
卸载
1:在遇到 new、putstatic、getstatic、invokestatic 字节码指令时,如果类尚未初始化,则需要先触发其初始化。2:对类进行反射调用时,如果类还没有初始化,则需要先触发其初始化。3:初始化一个类时,如果其父类还没有初始化,则需要先初始化父类。4:虚拟机启动时,用于需要指定一个包含 main() 方法的主类,虚拟机会先初始化这个主类。5:当使用 JDK 1.7 的动态语言支持时,如果一个 java.lang.invoke.MethodHandle 实例最后的解析结果为 REF_getStatic、REF_putStatic、REF_invokeStatic 的方法句柄,并且这个方法句柄所对应的类还没初始化,则需要先触发其初始化。
访问标志
0 条评论
下一页
为你推荐
查看更多