本文知识点
类的状态变化
方法
实例对象的创建
类的状态变化
类的初始化主要经历加载->链接(验证,准备,解析)->初始化这些阶段,与JVM中相对应的状态如下图所示
instanceKlass.hpp...验证: 类或接口的二进制信息是否正确, 方法的访问控制, 变量是否初始化等....通常来说, 只要我们写代码时ide不报错, 基本上就没什么问题, 但有些会自己构造.class文件,交由jvm运行, 所以要验证各种正确性
准备: 在类的准备阶段,将为类静态变量分配内存空间,和赋初始值..., 它只能在类型初始化阶段被虚拟机隐式调用,全程只调用一次
如果有继承的话,会先初始化父类
其源码如下:
如上图所示,有多个步骤,每个步骤的注释也十分清晰, 强烈建议小伙伴们把源码拉下来阅读一下
其实父类优先于子类初始化...tlabs/慢速分配(Eden)找一块空地, 然后完成实例数据和对象头的初始化.