码迷,mamicode.com
首页 > 编程语言 > 详细

java对象创建的过程

时间:2019-07-02 09:18:25      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:运行   自身   hash   array   虚拟   方法   存储   数据   指针   

1.检查类是否被加载

如果没有,限执行下相应的类加载过程;

2.为新生对象分配内存

如果堆中内存是规整的,采用指针碰撞。(所有用过的内存放在一边,空闲的内存方法另一边,中间放一个指针作为分界点的指示器,那么分配内存就是把指针向空闲空间挪动一段与对象相等的距离)

如果堆中内存不规整,采用空闲列表。虚拟机会维护个列表,查看哪些内存块可以用,在分配的时候找到一块足够大的给对象实例,并更新记录。

3.初始化零值

4.进行必要设置

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

5.执行init方法

把对象按照程序员的意愿进行初始化。

对象头

在对象中添加一些标记字段用于增强对象功能。

组成

1.mark word 

存储对象自身的运行时数据,如hashcode,gc分代年龄。32JVM为32位

2.class pointer

存储对象的类型指针,确定这个对象是哪个类的实例。32位JVM为32位。

3.array length

如果对象是数组,则存储数组长度。

java对象创建的过程

标签:运行   自身   hash   array   虚拟   方法   存储   数据   指针   

原文地址:https://www.cnblogs.com/NeverGiveUp0/p/11118217.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!