欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

对象创建的过程你真的懂吗?

程序员文章站 2022-05-23 14:01:05
...

我是一个从汽车行业转行IT的项目经理,我是Edward,如想了解更多,请关注我的公众号【转行项目经理的逆袭之路】。我们一起过一下

对象创建的过程你真的懂吗?

前两问:

对象创建的过程你真的懂吗?源码:

class T {
    int m = 8;
}
T t = new T();

汇编码:

0 new #2 <T>
3 dup
4 invokespecial #3 <T.<init>>
7 astore_1
8 return

申请内存,在堆里面创建一个新对象。
半初始化,新建对象中的m值是0。
dup
复制操作,因为invokespecial会消耗一份引用,所以先复制一份
invokespecial
4 invokespecial #3 <T.>
init是调用它的构造方法。
此时对象中的m值是8。
astore_1
将符号和对象建立关联,即t和堆中的对象。

对象创建的过程你真的懂吗?

第三问:
对象创建的过程你真的懂吗?

第四问:
markword:
哈希码、GC信息、锁信息
classpointer
对象创建的过程你真的懂吗?

第五问:
对象创建的过程你真的懂吗?

第六问:
对象创建的过程你真的懂吗?

第七问:
8+4+4=16

第八问:
虚函数表太费空间

第九问:
对象创建的过程你真的懂吗?

对象创建的过程你真的懂吗?