栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

对象的创建过程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对象的创建过程

如何创建对象

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821746.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号