并发Java
- 分类
- Java 并发
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/29 01:13
答案
当我们new一个对象时, 1. 首先会进行类加载检查,虚拟机会根据new的类型去常量池中寻找是否有对应的符号引用,如果有的话,就看其是否已经被加载、链接和初始化,如果没有,就会由类加载器执行加载。 2. 类加载检查完成后,就会为对象进行内存空间的分配,分配主要有两种方式:指针碰撞和空闲列表。在分配时可能会遇到一些并发问题,因此需要使用CAS自旋方式进行分配,还有一种方法就是TLAB,线程可以现在自己私有的TLAB上进行对象的分配,如果空间不足再去堆当中利用CAS自旋进行分配 3. 当空间分配完后,就对其空间进行初始化,除了对象头以外的位置,设为0 4. 然后对对象头进行初始化,对象头包括指向该对象是那个类型的实例,hashcode,分代年龄,锁标识等信息。 5. 最后就执行构造器方法,对对象进行初始化
相关题目(5)
怎么查看和分析堆内存?共源 1
Java
CPU 满了怎么排查?共源 1
并发Java
哪些情况会发生栈溢出?共源 1
Java JVM并发Java
常用的 JVM 排查工具有哪些?共源 1
Java JVM并发Java
JVM 什么时候启动?共源 1
Java JVMJava
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(JVM).md
knowledge_noteQuestion 28: 对象分配的全过程是怎样的?
Source answer: 当我们new一个对象时, 1. 首先会进行类加载检查,虚拟机会根据new的类型去常量池中寻找是否有对应的符号引用,如果有的话,就看其是否已经被加载、链接和初始化,如果没有,就会由类加载器执行加载。 2. 类加载检查完成后,就会为对象进行内存空间的分配,分配主要有两种方式:指针碰撞和空闲列表。在分配时可能会遇到一些并发问题,因此需要使用CAS自旋方式进行分配,还有一种方法就是TLAB,线程可以现在自己私有的TLAB上进行对象的分配,如果空间不足再去堆当中利用CAS自旋进行分配 3. 当空间分配完后,就对其空间进行初始化,除了对象头以外的位置,设为0 4. 然后对对象头进行初始化,对象头包括指向该对象是那个类型的实例,hashcode,分代年龄,锁标识等信息。 5. 最后就执行构造器方法,对对象进行初始化
Reviewed answer: 对象创建通常包括:先进行类加载检查;再为对象分配内存,常见方式有指针碰撞和空闲列表,并可能结合CAS或TLAB保证并发安全;随后将对象实例数据初始化为零值;再设置对象头;最后执行构造方法完成初始化。