优普南通网站建设,网站建设好找工作吗,阜宁做网站找哪家好,wordpress4.9.4 安装一、JVM类加载机制简介 虚拟机把描述类的数据从Class文件加载到内存#xff0c;并对数据进行校验、转换解析和初始化#xff0c;最终形成可以被虚拟机直接使用的Java类型#xff0c;这就是虚拟机的类加载机制。 在Java语言里面#xff0c;类型的加载和连接过程都是在程序运…一、JVM类加载机制简介 虚拟机把描述类的数据从Class文件加载到内存并对数据进行校验、转换解析和初始化最终形成可以被虚拟机直接使用的Java类型这就是虚拟机的类加载机制。 在Java语言里面类型的加载和连接过程都是在程序运行期间完成的。 二、JVM加载类的过程 类从被加载到虚拟机内存中开始到卸载出内存为止它的整个生命周期包括了加载Loading、验证Verification、准备Preparation、解析Resolution、初始化Initialization、使用using和卸载Unloading七个阶段。其中验证、准备和解析三个部分统称为连接Linking这七个阶段的发生顺序如下图所示。 对于初始化阶段虚拟机规定了只有在如下四种情况下必须立即对类进行“初始化”而加载、验证、准备自然需要在此之前开始 1、遇到new、getstatic、putstatic或invokestatic这4条字节码指令时如果类没有进行过初始化则需要先触发其初始化。 2、使用java.lang.reflect包的方法对类进行反射调用的时候如果类没有进行过初始化则需要先触发其初始化。 3、当初始化一个类的时候如果发现其父类还没有进行过初始化则需要先触发其父类的初始化。 4、当虚拟机启动时用户需要制定一个要执行的主类包含main()方法的那个类虚拟机会先初始化这个类。 1加载阶段 在加载阶段虚拟机需要完成以下3件事情 1、 通过一个类的全限定名来获取定义此类的二进制字节流。 2、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 3、 在Java堆中生成一个代表这个类的java.lang.Class对象作为方法区这些数据的访问入口。 2验证阶段 在验证阶段需要对文件格式、元数据、字节码、符号引用等进行验证目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求并且不会危害虚拟机自身的安全。 3准备阶段 准备阶段是正式为类变量分配并设置类变量初始值的阶段这些内存都将在方法区中进行分配需要说明的是这时候进行内存分配的仅包括类变量(被static修饰的变量)而不包括实例变量实例变量将会在对象实例化时随着对象一起分配在Java堆中这里所说的初始值“通常情况”是数据类型的零值。如果类字段属性表中存在ConstantValue属性那在准备阶段变量value就会被初始化为ConstantValue属性所指定的值。 4解析阶段 解析阶段是虚拟机将常量池内的符号引用替换成直接引用的过程解析动作主要针对类或接口、字段、类方法、接口方法四类符号引用进行。 5初始化阶段 在准备阶段变量已经赋过一次系统要求的初始值而在初始化阶段则是根据程序员通过程序制定的主观计划去初始化类变量和其他资源。