Java类加载
2021-10-28 21:27:20 6 举报
AI智能生成
Java类加载
作者其他创作
大纲/内容
静态加载
类加载(Load)
1. 从磁盘中加载Class文件(通过类全名),转换成二进制字节流
2. 将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构
3. 在Java堆中生成一个代表这个类的Class对象,作为对方法区中这些数据的访问入口
链接(Link)
验证
文件格式验证,元数据验证,字节码验证,符号引用验证
准备
为类的静态变量分配内存,并默认初始化值
解析
把类中的符号引用转换为直接引用,比如变量名,方法名,类名等,需要解析成运行时内存中相关的地址引用。
初始化(Init)
如果类中有静态域或者静态代码块,反编译之后会发现,会自从生成cinit方法,进行初始化
静态变量,静态代码块初始化顺序
按照程序的书写顺序,依次执行
继承中的类初始化
需要先初始化父类,在初始化子类
非静态加载
new关键字
去常量池中找对应的 当前类是否找得到
找到就直接使用地址
找不到则需要去进行类加载
调用无参构造器进行初始化(init方法)
调用父类的构造方法初始化父类
给成员变量赋初始值,执行非静态代码块
执行构造方法中的内容
执行顺序
按照程序的书写顺序,依次执行
混合加载
在类的静态成员中直接使用new关键字赋值
0 条评论
下一页