怎样在设计网站做图赚钱吗,新网站外链怎么做,查询网138网站域名,济南企业做网站推广网站目录 一、Java对象实例化在JVM中的过程#xff1a; 类加载与初始化 分配内存 初始化对象内存 设置对象头 执行初始化方法 构造方法执行 二、对象的创建过程 一、Java对象实例化在JVM中的过程#xff1a; 类加载与初始化#xff1a; 当JVM需要实例化一个对象时#xff0c;它… 目录 一、Java对象实例化在JVM中的过程 类加载与初始化 分配内存 初始化对象内存 设置对象头 执行初始化方法 构造方法执行 二、对象的创建过程 一、Java对象实例化在JVM中的过程 类加载与初始化 当JVM需要实例化一个对象时它首先会检查目标类是否已经被加载和初始化。如果类没有被加载JVM会通过类加载器ClassLoader将类的字节码文件加载到内存中并为其生成对应的Class对象。加载完成后JVM会进行类的初始化这包括执行类中的静态变量初始化、静态代码块等。 分配内存 一旦类完成初始化JVM会根据目标类的大小在堆内存中为其分配内存空间。内存分配的方式取决于Java堆内存的规整性可能采用指针碰撞或空闲列表。 初始化对象内存 为对象分配内存后JVM会将对象的普通成员变量实例变量初始化为默认值如int为0String为null。这一步确保对象在构造方法执行前其字段已经是确定的默认值可以安全地被访问。 设置对象头 JVM还会为新创建的对象设置对象头信息包括对象的哈希码、GC分代年龄、锁状态等以及对象的类元信息指向Class对象的指针。 执行初始化方法 对于Java程序来说对象的创建在JVM层面完成后还需要执行Java代码层面的初始化。这包括执行由编译器自动生成的init方法也称为实例构造器或构造器方法该方法会初始化成员变量的值执行实例初始化块非静态代码块并最终调用目标对象的构造方法。 构造方法执行 构造方法是Java程序员在类中定义的用于初始化对象的特殊方法。当构造方法执行完毕后一个完全初始化的Java对象就创建完成了。 二、对象的创建过程 1、实例化一个对象jvm首先会检查目标对象是否被加载并初始化如果没有需要立刻去加载目标类然后调用目标类的构造器完成初始化。 2、目标的加载通过类加载器来实现主要是把一个类加载到内存中 3、然后是初始化的过程主要是对目标类里面的静态变量、成员变量、静态代码块进行初始化 4、当目标类被初始化以后就可以从常量池里面去找到对应的类元信息了并且目标对象的大小在类加载完之后就确定了所以就需要为新创建的对象根据目标对象的大小在堆内存里面去分配内存空间内存分配的方式2种1、指针碰撞2、空闲列表。 5、jvm会根据java堆内存是否规整来决定内存的分配方法然后jvm会把普通成员变量初始化为0值int--0string-- null。 主要是为了保证对象里面的实例字段不用初始化就可以直接使用也就是程序能够直接获取这些字段对应的数据类型的0值 6、然后还需要对目标对象的对象头做一些设置比如对象所属的类元信息 。 对于jvm来说 新对象的创建工作完成了但是对于java语言来说对象创建刚刚开始接下来要做的就是执行目标对象内部生成的init 方法初始化成员变量的值执行构造块、最后调用目标对象的构造方法完成对象创建。init java文件编译后 在字节码文件里面生成的他是一个实例构造器会把变量初始化完成初始化动作。