java底层对象的创建过程

    技术2024-01-01  99

    1对象的创建过程

    源码:

    class T{ int m=9; } T t=new T(); T t=new T();的汇编码: 0 new #2 <T> //半初始化 确定具体内存大小 m的值初始为0 3 dup 4 invokespecial #3 <T.<init>> //具体赋值 将m的值 初始为9 7 astore_1 //赋值 将new T()对象赋值给t 8 return

    此处如果不加volatile关键字,一行new对象的代码(对应好几行汇编码) 有可能会发生代码重排序(cpu乱序执行)。

    这里也是单例模式 为啥单例对象要加volatile关键字的原因:防止一个线程创建对象时,此时对象处于半初始化状态,同时其他线程进入(其他的线程判断时 该对象已经不为null),返回一个半初始化对象。

    Processed: 0.008, SQL: 9