(运行时常量池)在堆中创建这个类的Class对象,这个Class对象是对方法区访问数据的"入口"堆中实例对象中对象头的类型指针指向它这个类方法区的类元数据对于加载可以由JVM的自带类加载器来完成,也可以通过开发人员自定义的类加载器来完成...Preparation准备准备阶段为类变量(静态变量)分配内存并默认初始化分配内存逻辑上应该分配在方法区,但是因为hotSpot在JDK7时将字符串常量,静态变量挪出永久代(放在堆中)实际上它应该在堆中默认初始化类变量一般的默认初始化都是初始化该类型的零值...交给当前所在类的类加载器 去加载 这个要解析的类解析前要进行符号引用验证,如果当前所在类没有权限访问这个要解析的类,抛出异常IllegalAccessError字段的解析解析一个从未解析过的字段先对此字段所属的类...(类, 抽象类, 接口)进行解析然后在此字段所属的类中查找该字段简单名称和描述符都匹配的字段,返回它的直接引用如果此字段所属的类有父类或实现了接口,要自下而上的寻找该字段找不到抛出NoSuchFieldError...,要自下而上的寻找该方法(先找父类再找接口)如果在接口中找到了,说明所属类是抽象类,抛出AbstractMethodError异常(自身找不到,父类中找不到,最后在接口中找到了,说明他是抽象类),找不到抛出