类加载步骤
JVM类加载分为5个过程:加载,验证,准备,解析,初始化,使用,卸载
加载
将.class文件或者其他文件中的二进制字节流读入到JVM中
1,通过类的全名获取二进制字节流
2,将1中获取二进制字节流代表的静态存储结构转化为方法区运行时的数据结构
3,根据2中的数据结构生成一个该类的java.lang.Class对象,用于方法区调用该类的访问入口
验证
确保加载进来的二进制字节流符合JVM的规范
1,验证文件格式是否正确
2,验证元数据是否正确,即是否符合JAVA规范
3,验证字节码是否正确,即是否符合语法规范 4,验证符号引用,即是否符合解析规范,保证可以正常解析
准备
为静态变量在方法区分配空间,并设定初始值
解析
JVM将常量池中的符号引用替换成直接引用
初始化
根据程序代码中的复制语句,主动给类的变量赋值
先父后子原则:先赋值父类再赋值子类
什么时候需要对类进行初始化设置呢?
1,使用new创建一个该类的实例化对象的时候
2,调用一个类的静态方法
3,调用一个类或接口的静态字段,或者对其赋值时
4,调用JavaApi的反射方法时
5,初始化一个派生类时
6,JVM启动包含main方法的启动类时
网友评论