类加载检查
当一个对象要被创建时,Java虚拟机(JVM)首先会检查类是否已经加载。如果类还没有加载,JVM会通过类加载器将其加载到内存中。
分配内存
在类加载后,JVM需要为新对象分配内存。内存分配的方式通常有两种:
- 指针碰撞法:如果堆内存是规整的,那么JVM可以通过移动一个指针来分配内存。这种方式快速且高效。
- 空闲列表法:如果堆内存中存在碎片,那么JVM会通过维护一个空闲列表来寻找足够大的内存块进行分配。
初始化
一旦内存分配完成,JVM会对这块内存进行清零(这保证了Java程序不会读到未初始化的内存)。
设置对象头
JVM会设置对象的头信息,包括类的元数据指针、哈希码、GC信息等。
执行构造方法
最后,JVM会调用对象的构造方法来初始化对象。