java对象的创建过程:
类加载检查-->分配内存-->初始化零值-->设置对象头-->执行init方法
具体如下:
1、类加载检查
虚拟机遇到一条new指令时,先检查这个指令的参数能否在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被ji加载、解析和初始化过。如果没有,则先进行类的加载过程。
2、分配内存
有两种方式:
(1)指针碰撞:假设Java堆中的内存是规整的,用过的内存在一边,空闲的在另一边,中间有一个指针作为分界点的指示器,所分配的内存就把那个指针向空闲那边挪动一段与对象大小相等的距离。
(2)空闲列表:如果Java堆中的内存不是规整的,虚拟机必须维护一个列表,记录哪些内存块可用的,分配时从列表中找到一块足够大的空间划分给对象,并更新列表的记录。
3、初始化零值
将分配到的内存空间都初始化为零值,如果用TLAB,则在TLAB分配时初始化为零值。
4、设置对象头
主要设置类的元数据信息、对象的哈希码、对象的GC分代年龄等信息。
5、执行init方法初始化。
以上就是java对象的创建过程是什么的详细内容,更多请关注亿速云其它相关文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。