java对象创建的过程
Posted nevergiveup0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java对象创建的过程相关的知识,希望对你有一定的参考价值。
1.检查类是否被加载
如果没有,限执行下相应的类加载过程;
2.为新生对象分配内存
如果堆中内存是规整的,采用指针碰撞。(所有用过的内存放在一边,空闲的内存方法另一边,中间放一个指针作为分界点的指示器,那么分配内存就是把指针向空闲空间挪动一段与对象相等的距离)
如果堆中内存不规整,采用空闲列表。虚拟机会维护个列表,查看哪些内存块可以用,在分配的时候找到一块足够大的给对象实例,并更新记录。
3.初始化零值
4.进行必要设置
这个对象是哪个类的实例,如何找到类元数据信息,对象GC分代年龄等信息,这些信息放在对象的对象头中。
5.执行init方法
把对象按照程序员的意愿进行初始化。
对象头
在对象中添加一些标记字段用于增强对象功能。
组成
1.mark word
存储对象自身的运行时数据,如hashcode,gc分代年龄。32JVM为32位
2.class pointer
存储对象的类型指针,确定这个对象是哪个类的实例。32位JVM为32位。
3.array length
如果对象是数组,则存储数组长度。
以上是关于java对象创建的过程的主要内容,如果未能解决你的问题,请参考以下文章
JVM技术专题 全流程化分析Java对象的创建过程「 原理篇」