搜索引擎有哪些?,青岛网站seo收费标准,wordpress 导航别名,目录搜索引擎有哪些JVM#xff1a;类加载机制 1. 什么是类加载机制2. 类加载的过程(生命周期)2.1 加载2.2 校验#xff08;验证#xff09;2.3 准备2.n 六种情况对类进行“初始化” 1. 什么是类加载机制
Java虚拟机把描述类的数据从Class文件加载到内存#xff0c;并对数据进行校验、转换解析… JVM类加载机制 1. 什么是类加载机制2. 类加载的过程(生命周期)2.1 加载2.2 校验验证2.3 准备2.n 六种情况对类进行“初始化” 1. 什么是类加载机制
Java虚拟机把描述类的数据从Class文件加载到内存并对数据进行校验、转换解析和初始化最终形成可以被虚拟机直接使用的Java类型这个过程被称作虚拟机的类加载机制。
2. 类加载的过程(生命周期)
一个类型从被加载到虚拟机内存中开始到卸载出内存为止它的整个生命周期将会经历加载、验证、准备、解析、初始化、使用和卸载七个阶段其中验证、准备、解析三个部分统称为连接。
2.1 加载
加载过程主要完成三件事情
通过一个类的全限定名来获取定义此类的二进制字节流。将这个类字节流代表的静态存储结构转为方法区的运行时数据结构。在堆中生成一个代表此类的java.lang.Class对象作为访问方法区这些数据结构的入口。
这个过程主要就是类加载器完成。
2.2 校验验证
此阶段主要确保Class文件的字节流中包含的信息符合当前虚拟机的要求并且不会危害虚拟机的自身安全。
文件格式验证基于字节流验证。 元数据验证基于方法区的存储结构验证。 字节码验证基于方法区的存储结构验证。 符号引用验证基于方法区的存储结构验证。
2.3 准备
2.n 六种情况对类进行“初始化” 遇到new、getstatic、putstatic或invokestatic这四条字节码指令时如果类型没有进行过初始化则需要先触发其初始化阶段。能够生成这四条指令的典型Java代码场景有 a. 使用new关键字实例化对象b. 读取或设置一个类型的静态字段被final修饰、已在编译期把结果放入常量池的静态字段除外的时候。c. 调用一个类型的静态方法的时候。 使用java.lang.reflect包的方法对类型进行反射调用的时候如果类型没有进行过初始化则需 要先触发其初始化。 当初始化类的时候如果发现其父类还没有进行过初始化则需要先触发其父类的初始化。 当虚拟机启动时用户需要指定一个要执行的主类包含main()方法的那个类虚拟机会先 初始化这个主类。 当一个接口中定义了JDK 8新加入的默认方法被default关键字修饰的接口方法时如果有 这个接口的实现类发生了初始化那该接口要在其之前被初始化。 当使用JDK 7新加入的动态语言支持时如果一个java.lang.invoke.MethodHandle实例最后的解 析结果为REF_getStatic、REF_putStatic、REF_invokeStatic、REF_newInvokeSpecial四种类型的方法句柄并且这个方法句柄对应的类没有进行过初始化则需要先触发其初始化。
// TODO