在Java中使用`new`关键字创建一个对象时,会经过以下几个步骤:
1. 类的加载:首先,JVM会检查这个类是否已经被加载到内存中。如果没有加载过,则会进行类加载操作,将类的字节码加载到内存中的方法区。
2. 类的链接:在类加载的过程中,会进行类的链接操作。链接包括三个阶段:验证、准备和解析。验证阶段会检查类的正确性,准备阶段会为静态字段分配内存并设置默认值,解析阶段会将符号引用转换为直接引用。
3. 对象的内存分配:在执行完链接阶段后,JVM会在堆内存中分配对象的内存空间。根据对象的大小和分代年龄等情况,JVM会选择适当的垃圾回收算法和内存分配策略。
4. 成员变量的初始化:在对象内存分配完成后,JVM会对对象的成员变量进行初始化。如果有默认值,则会先初始化为默认值,然后按照代码中的赋值语句进行初始化。
5. 构造方法的调用:在成员变量初始化后,JVM会调用对象的构造方法来完成对象的初始化。构造方法会执行一些特定的逻辑和业务。
6. 返回对象的引用:经过上述步骤后,JVM会返回一个指向新创建对象的引用。可以将这个引用赋值给变量,以便后续对对象进行使用。
值得注意的是,这里的步骤是一个简化的描述,并不涵盖JVM的所有细节。不同的JVM实现或具体的场景可能会有所差异,但总体的流程是相似的。
向大家推荐《Activiti工作流实战教程》:https://xiaozhuanlan.com/activiti