java对象的创建过程:
类加载检查-->分配内存-->初始化零值-->设置对象头-->执行init方法
具体如下:
1、类加载检查
虚拟机遇到一条new指令时,先检查这个指令的参数能否在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被ji加载、解析和初始化过。如果没有,则先进行类的加载过程。
(视频教程推荐:java视频)
2、分配内存
有两种方式:
(1)指针碰撞:假设Java堆中的内存是规整的,用过的内存在一边,空闲的在另一边,中间有一个指针作为分界点的指示器,所分配的内存就把那个指针向空闲那边挪动一段与对象大小相等的距离。
(2)空闲列表:如果Java堆中的内存不是规整的,虚拟机必须维护一个列表,记录哪些内存块可用的,分配时从列表中找到一块足够大的空间划分给对象,并更新列表的记录。
3、初始化零值
将分配到的内存空间都初始化为零值,如果用TLAB,则在TLAB分配时初始化为零值。
4、设置对象头
主要设置类的元数据信息、对象的哈希码、对象的GC分代年龄等信息。
5、执行init方法初始化。
推荐教程:java开发入门
Atas ialah kandungan terperinci java对象的创建过程是什么. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!