JAVA虚拟机对象探秘

2019-06-22  本文已影响0人  cjxll
对象的创建

虚拟机遇到一条new指令时,执行以下步骤创建对象:

  1. 首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载。解析和初始化。
  2. 步骤1结果没有,则执行相应的类加载过程
  3. JVM为新生对象分配内存,类加载完成便可确定。
  1. 内存分配完成后,JVM将分配到内存空间都初始化零值,可提前至TLAB中完成。这一步保证了对象的实例字段在JAVA代码中不赋初始值就可直接使用
  2. JVM对对象进行必要设置,对象头信息等
  3. 以上步骤完成之后,从JVM视角来看,一个新对象已经产生了,但从Java程序角度看,对象的创建才刚刚开始,执行<init>方法完成初始化
对象的内存布局

对象在内存中可以分为3块区域:

对象的访问定位

jvm通过虚拟机栈上的reference数据来操作堆上的具体对象,有2种访问方式

上一篇 下一篇

猜你喜欢

热点阅读