判断对象是否加载、分配内存(指针碰撞或者空闲列表)、初始化为零值、设置对象头(实例是哪个类的实例、类的元信息地址、GC分代年龄等)、<init>方法。
对象在内存中存储的布局可以分为3块区域:对象头,实例数据,对齐填充。对象的定位访问有:句柄和直接访问P48
虚拟机遇到一条new指令时,首先先去检查这个指令参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载,解析和初始化过。如果没有,那必须先执行相应的类加载过程。
详细的参见下面博客。
判断对象是否加载、分配内存(指针碰撞或者空闲列表)、初始化为零值、设置对象头(实例是哪个类的实例、类的元信息地址、GC分代年龄等)、<init>方法。
对象在内存中存储的布局可以分为3块区域:对象头,实例数据,对齐填充。对象的定位访问有:句柄和直接访问P48
虚拟机遇到一条new指令时,首先先去检查这个指令参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载,解析和初始化过。如果没有,那必须先执行相应的类加载过程。
详细的参见下面博客。