java虚拟机(二)对象如何创建的

创建对象,如反序列化、克隆。其实就是new的过程。

1.检查

既然要创建,那类必须要先实例化。查找类是否实例化的过程就是在虚拟机找该类是否被加载。(其实类一旦被加载,就会执行静态方法)

2.为新生对象分配内存

分配的方式有两种,指针碰撞,空闲列表。

指针碰撞就是把内存分成两边,一边是被分配内存的空间,一边是空闲的空间。指针就来指向这两边的中间,一旦创建了新对象分配内存,指针就往空闲的那边挪一点。

空闲列表,学过操作系统的都知道,只要维护一个表就行,哪里是被分配的,哪里是空闲的。

3.初始化0值

在为对象分配内存空间以后,内存空间都会被初始化为0,如果是对象就为null.

这就是为什么java代码中不用自己初始化的原因

4.对对象进行必要的设置

这个对象是哪个类的实例,如何才能找到元数据信息,对象的哈希码,对象的分代年龄等。把这些信息放在对象头中

5.执行<init>方法

把对象按照程序员意愿进行初始化,即执行<init>方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值