Java 对象的创建过程
389.87 KB
4 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
中文(简体) | .pdf | 3 |
摘要 | ||
文档详细阐述了Java对象的创建过程,包括类加载检查、内存分配、初始化零值、设置对象头和执行init方法等五个步骤。内存分配方式主要有指针碰撞和空闲列表两种,具体选择取决于Java堆是否规整。此外,文档还介绍了对象访问的两种方式:句柄和直接指针,分别具各自的优势,如句柄地址稳定、直接指针速度快等。整个过程全面描述了Java虚拟机在对象创建和访问上的实现细节。 | ||
AI总结 | ||
《Java 对象的创建过程》
本文详细介绍了Java对象创建的完整过程,并探讨了对象访问的方式。以下是核心内容的总结:
1. **对象创建过程**:
- **类加载检查**:虚拟机遇到new指令时,检查类的符号引用是否已加载、连接、解析和初始化,未完成则进行类加载。
- **分配内存**:为对象在堆中分配内存,主要方式包括:
- **指针碰撞**:适用于堆规整的情况,通过空闲指针移动来分配空间。
- **空闲列表**:适用于堆碎片化的情况,维护空闲内存块列表。
- **并发安全解决**:使用CAS(乐观锁)和TLAB(线程本地分配缓冲区)防止分配内存时的线程竞争。
- **初始化零值**:将分配的内存空间设置为零值,确保对象字段可以直接使用。
- **设置对象头**:存储对象的类元数据、哈希码、GC代年龄等信息。
- **执行init方法**:调用构造函数,按照程序员设定初始化对象。
2. **对象访问方式**:
- **句柄访问**:堆中划分句柄池,reference存储句柄地址。优点是对象移动时reference无需修改,句柄更新实例指针。
- **直接指针访问**:reference直接存储对象地址,优势是速度更快,省去一次指针定位开销。
总结:文中详细阐述了Java对象的创建过程及访问方式,分别介绍了五个创建步骤和两种访问方式的特点。 |
P1
P2
P3
P4
下载文档到本地,方便使用
文档评分