在JVM中,对象的创建是从一个new指令开始的过程,具体流程如下:

  1. 首先,检查new指令的参数,确定是否能在常量池中找到类的符号引用。
  2. 然后,检查符号引用所代表的类是否已经被加载、解析和初始化过。如果没有,就会先执行相应的类加载过程,包括加载类的字节码文件、验证字节码的正确性,解析符号引用并进行符号解析,最后对类进行初始化。
  3. 类加载检查通过后,虚拟机将为新创建的对象分配内存空间。
  4. 内存分配完成后,虚拟机会对分配到的内存空间进行初始化,将其值都设置为零值(对于基本类型的成员变量,如整型设置为0,布尔类型设置为false,引用类型设置为null)。
  5. 接下来,虚拟机会设置对象的对象头(Object Header),对象头包含了对象所属的类信息、如何定位类的元数据信息、对象的哈希码、对象的分代年龄等重要信息。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题