java创建对象的过程

java创建对象的过程

java中对象实例的创建大多是在堆中的,这是线程的共享区域。
创建对象的过程如下:1.在堆中划分一块合适的空间并规划字段->2.初始化对象数据类型的值为0值->3.设置对象头->4.调用init方法
详解
1.分配内存
有些垃圾回收器清理垃圾时有压缩整理功能,有些则没有。所以有压缩整理功能的垃圾回收器所具有的堆物理内存为连续的内存空间,而没有压缩整理功能的垃圾回收器的堆内存是不连续的物理空间。所以创建对象时就有两种划分空间的方式,物理连续内存的划分方式是“指针碰撞”,物理上不连续的内存分配方式是"空闲列表"。
指针碰撞:指针将对象内存和空闲内存分隔开,若有新的对象创建,指针会向空闲内存移动,移动的内存足够装下新创建的对象为止。
空闲列表:物理内存不连续时,需要维护一张表去记录那些内存是空闲的,当有对象被创建时,给新对象分配一个足够容纳的内存并且更新列表。
2.字段值归零
第一步对象分配完内存之后就有对应的字段了,字段的值还没有,第二步就是将对应的值设为对应的0值。
3.设置对象头
将对象的信息装进对象头中,比如对象是那个类的实例,如何才能找到对象的元数据信息,对象的哈希码,对象的GC分代年龄等信息。
4.调用init方法
把对象按照程序员的意愿初始化。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值