Java对象创建过程

1.    用户new一个对象。

2.    JVM检查常量池,看是否可定位到一个类(所对应的符号引用),并检查该类是否已经加载,解析和初始化。若没有,则执行类加载过程。

3.    类加载检查通过,JVM为新对象分配内存。由于类已经加载完成,所以内存大小是可以确定的。分配过程就是从Java堆中划分一块内存出来。JVM维护了一个空闲内存列表,记录了所有可用的内存块。分配时划分一块足够大的内存出来。这称为“空闲列表”。

实际上,每个线程在Java堆上都是会预先分配一小块内存的,称为本地线程分配缓冲(TLAB)。当该线程需要分配内存时,优先使用TLAB。只有当TLAB用完并分配新的TLAB时,才需要同步锁定。

4.    内存分配完成后,JVM将分配的内存空间进行初始化为零值(不包括对象头)。若使用TLAB,这一步会提前到TLAB分配时进行。故对象实例的字段可以不赋初值就可直接使用。

5.    JVM对对象进行必要设置,并将各种设置信息放在对象头之中。完成之后,一个新对象产生了。

6.    执行对象的int方法。一个真正可用的对象产生。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值