Java对象创建的过程?

Java创建对象的过程?

  • 判断是否被加载到内存
    • Jvm遇到一条new指令时,会检查这个指令的参数是否能在常量池中定位到一个类的符号引用,检查其是否被加载,解析和初始化,如果没意义,把类加载到内存
  • 为对象分配内存空间
    • 分配内存有两种方式,​即​​​​​​碰撞指针和空闲列表,如果堆内存是规整的使用碰撞指针,如果不规整使用空闲列表,堆内存的规整取决于Java垃圾回收机制是否有压缩整理的功能
  • 初始化零值
    • Jvm会对对象的变量初始化零值,以保证它们没有赋初值仍然可以用
  • 设置对象头
    • 把对象的元数据信息,哈希码,GC分代信息存到对象头上
  • 执行init方法
    • 此时从Jvm的角度已经完成,但从Java程序的角度,才刚开始执行init方法,把对象按照程序员的意愿初始化,完成对象的创建

猜你喜欢

转载自blog.csdn.net/qq_39820860/article/details/85229151