对象的创建过程

如何创建对象

在实例化一个对象的时候,JVM首先会去检查目标对象,是否已经被加载并初始化,JVM需要去做的是立刻加载目标类,然后去调用目标类的构造器,去完成初始化,目标类的加载,通过类加载器来实现的,主要就是把一个类加载到内存里面,然后是初始化的过程,主意是对目标类里面的静态变量,成员变量,静态代码块进行初始化,当目标类被初始化以后,就可以从常量池里面去找到对应的类元信息了,并且目标对象的大小,在类加载完成之后呢就已经确定了,所以这个时候,就需要为新创建的对象根据目标对象的大小,在堆内存里面去分配内存空间,内存分配空间的方式一般有两种,第一种是指针碰撞,第二种是空闲列表,JVM回去根据Java堆内存是否规整来决定内存的分配方法,JVM会去把目标对象里面的普通成员变量初始化为0值,比如说int类型初始化为0,string类型初始化为null,这一步操作主要是保证对象里面的是实例字段不用初始化就可以直接使用,也就是程序能够直接获取这些字段对应的数据类型的0值,然后JVM还需要对目标对象的对象头做一些设置,比如对象所属的类元信息,对象的GC分代年龄,hashcode,锁标记等等,完成这些步骤以后对于JVM来说,新对象的创建工作已经完成了,但是对Java语言来说,对象创建才算刚刚开始,接下来做的是执行目标对象内部生成的init方法,初始化成员变量的值,执行构造快,最后调用目标对象的构造方法去完成对象创建,其中init方法是Java文件编译之后,
是在字节码文件里面去生成的,它是一个实例构造器,这构造器里面会把构造块,变量初始化,调用父类构造器等这样一些操作组织在一起,所以调用init方法能完成一系列的初始化动作

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我黄同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值