new一个对象的过程:
1.加载类对象,分配内存。这个过程由加载系统负责。主要就是将字节码加载到内存,然后检测类对象语义语法的正确性,接着为对象分配对应的内存。
2.分配完内存,开始初始化对象内存和写入类协议。具体就是把分配的内存都初始化为默认值(JMM最低安全保证)。写入对象的标识hashcode,对象的年纪gc,对象的锁标识01(默认01)。
3.给引用赋值/给属性赋值。这里的具体顺序由指令重排结果确定,从而也引出了构造函数并发的问题。
1.加载类对象,分配内存。这个过程由加载系统负责。主要就是将字节码加载到内存,然后检测类对象语义语法的正确性,接着为对象分配对应的内存。
2.分配完内存,开始初始化对象内存和写入类协议。具体就是把分配的内存都初始化为默认值(JMM最低安全保证)。写入对象的标识hashcode,对象的年纪gc,对象的锁标识01(默认01)。
3.给引用赋值/给属性赋值。这里的具体顺序由指令重排结果确定,从而也引出了构造函数并发的问题。
2022-10-21
在牛客打卡2天,今天也很努力鸭!
全部评论
相关推荐
点赞 评论 收藏
分享