标签:初始化 final ini init 父类 内存地址 直接 技术分享 加载过程
JVM总括四-类加载过程、双亲委派模型、对象实例化
一定要注意每个过程执行的内容!!!!!!
1、Load:
将编译后的.class文件以二进制流的方式加载到JVM内存中,并转化为特定的数据结构,用到的就是classLoad二类加载器。这个过程中校验cafe babe魔法数、常量池、文件长度、是否有父类等。
2、Link:
分为验证、准备、解析三步。
验证:更为详细的验证,比如:final是否规范(二次赋值不规范)、static是否合理(静态方法必须引用静态变量)、类型是否正确。
准备:静态变量分配内存并设定默认值(静态变量不赋值是有个默认值得),这个过程没有对象实例化。
解析:把类中的符号引用转化为直接引用,完成内存结构布局。(符号引用转化为直接引用:例如:test1() { test2(); },这里test1调用test2方法就是符号引用,但实际test2()通过一个指针指向test2方法的内存地址,这个指针负责调用,它就是直接引用)。
3、Init:初始化推迟到实例对象执行,执行静态代码块,为静态变量赋予正确的初始值,递归初始化父类,执行构造器。(先执行静态代码块,再执行静态变量)。
标签:初始化 final ini init 父类 内存地址 直接 技术分享 加载过程
原文地址:https://www.cnblogs.com/java-zzl/p/9862452.html