美文网首页工作生活
对象是怎么被创建的

对象是怎么被创建的

作者: fulj | 来源:发表于2019-07-03 08:35 被阅读0次

    第一步 new指令

    是否能在常量池里定位到这个类的符号引用,并检查是否被加载,解析,初始化。如果没有必须先加载

    第二步 分配内存

    不同的垃圾收集器使用不同方式分配内存

    • 指针碰撞:对于规整的Java堆内存,对于带有Compact过程的收集器
    • 空闲链表:基于Mark-Swap算法的收集器,类似CMS

    分配方式

    • 采用CAS算法
    • 采用TLAB 预先给线程分配一块堆空间,那么只有分配的时候需要同步锁定,提升性能

    第三步 虚拟机初始化对象

    • 这一步将分配到的内存初始化为零值(不包括对象头),如果使用TLAB,这一工作也可以提前至TLAB分配时进行。
    • 设置对象头的类型指针、对象hash码、GC分代年龄、是否偏向锁等

    第四步 程序员赋值

    也就是执行代码中的构造方法<init>

    相关文章

      网友评论

        本文标题:对象是怎么被创建的

        本文链接:https://www.haomeiwen.com/subject/qyefhctx.html