Java开发JVM对象的创建教程详细解析

在这里插入图片描述
第一步,类检测
  1、当Java虚拟机遇到一条new指令时,首先判断new的对象是否能在运行时常量池中找到对应类的类名(书中原话:检查这个指令的参数能佛在常量池中定位到一个类的符号引用)。如果没找到,应该就会抛ClassNotFound了。
  2、检查类是否被加载、解析和初始化过,如果没有,就必须执行相应的类加载过程。
  第二步,分配内存
  1、指针碰撞:在java堆内存绝对规整的情况下,用过的内存放一边,没用过的放另一边,中间放这个指针。对象要分配多大的空间,就挪多大的位置。
  2、空闲列表:如果java堆中的内存并不是规整的,那虚拟机就会维护一个列表,用来记录那些内存是可用的,并找出块足够大的内存分配给对象实例。
第三步,初始化内存空间
  分配完成后,虚拟机需要将分配到的内存看空间初始化为零值(除了对象头之外)。这一步保证了对象的实例字段在代码中可以不赋值就直接使用。
  第四步,设置对象信息
  将对象的信息存储到对象头,所存储的信息有:对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的GC分代年龄等信息。
  备注:从虚拟机的视角看,一个新对象已经产生了,但是从java程序的角度看,对象创建才刚刚开始,方法还没执行,所有字段都还为零。
  大致的流程如下图:
  在这里插入图片描述
  文章来自:https://www.itjmd.com/news/show-6398.html

猜你喜欢

转载自blog.csdn.net/a6984021/article/details/88688494