整体过程:
加载-》链接-》初始化
第一个过程-加载
加载:(classloader->方法区)
通过Class全路径名,获取class的二进制字节流
将二进制字节内容放入方法区
在内存中,生成Class对象代表这个class
第二个过程-链接
校验:
验证字节流合法性、安全性。比如魔术字、版本号
元数据验证:校验Class是否符合规范、
字节码验证:确保语法语义是否OK
符号引用验证,看是否能访问到
准备:
在方法区为class分配内存空间,为static赋默认值
解析:
将常理池中的符号引用,改为直接引用
什么是符号引用:
什么是直接引用:直接指向目标的指针,比如,对象就是引用地址
第三步:初始化:
调用cinit.进行参数构造。
公开课视频地址: