模型服务连接失败
并发Java
分类
Java 并发
难度
未设置
来源数
1
更新时间
2026/03/29 01:13

答案

当我们new一个对象时, 1. 首先会进行类加载检查,虚拟机会根据new的类型去常量池中寻找是否有对应的符号引用,如果有的话,就看其是否已经被加载、链接和初始化,如果没有,就会由类加载器执行加载。 2. 类加载检查完成后,就会为对象进行内存空间的分配,分配主要有两种方式:指针碰撞和空闲列表。在分配时可能会遇到一些并发问题,因此需要使用CAS自旋方式进行分配,还有一种方法就是TLAB,线程可以现在自己私有的TLAB上进行对象的分配,如果空间不足再去堆当中利用CAS自旋进行分配 3. 当空间分配完后,就对其空间进行初始化,除了对象头以外的位置,设为0 4. 然后对对象头进行初始化,对象头包括指向该对象是那个类型的实例,hashcode,分代年龄,锁标识等信息。 5. 最后就执行构造器方法,对对象进行初始化

相关题目(5)

元信息

审核状态: active
关联来源: 1

来源面经题(0)

这道题目前没有手动沉淀的面经题来源。

来源(1)

Java八股(JVM).md

knowledge_note
Question 28: 对象分配的全过程是怎样的? Source answer: 当我们new一个对象时, 1. 首先会进行类加载检查,虚拟机会根据new的类型去常量池中寻找是否有对应的符号引用,如果有的话,就看其是否已经被加载、链接和初始化,如果没有,就会由类加载器执行加载。 2. 类加载检查完成后,就会为对象进行内存空间的分配,分配主要有两种方式:指针碰撞和空闲列表。在分配时可能会遇到一些并发问题,因此需要使用CAS自旋方式进行分配,还有一种方法就是TLAB,线程可以现在自己私有的TLAB上进行对象的分配,如果空间不足再去堆当中利用CAS自旋进行分配 3. 当空间分配完后,就对其空间进行初始化,除了对象头以外的位置,设为0 4. 然后对对象头进行初始化,对象头包括指向该对象是那个类型的实例,hashcode,分代年龄,锁标识等信息。 5. 最后就执行构造器方法,对对象进行初始化 Reviewed answer: 对象创建通常包括:先进行类加载检查;再为对象分配内存,常见方式有指针碰撞和空闲列表,并可能结合CAS或TLAB保证并发安全;随后将对象实例数据初始化为零值;再设置对象头;最后执行构造方法完成初始化。