学校门户网站建设工作,网络推广方案写作七步法,wordpress如何添加友链,什么叫软文推广前言我们知道#xff0c;Java项目编译后会生成许许多多的class文件#xff0c;class文件保存着类的描述信息。虚拟机把描述类的数据从Class文件加载到内存#xff0c;并对数据进行校验、转化解析和初始化#xff0c;最终形成可以被虚拟机直接使用的Java类型#xff0c;这就…前言我们知道Java项目编译后会生成许许多多的class文件class文件保存着类的描述信息。虚拟机把描述类的数据从Class文件加载到内存并对数据进行校验、转化解析和初始化最终形成可以被虚拟机直接使用的Java类型这就是虚拟机的类加载机制。类的生命周期类从被加载到虚拟机内存中开始到卸载出内存位置他的整个生命周期包括加载验证准备解析初始化使用卸载这七个阶段。画个图就是下面这样其中类加载的过程包括了加载、验证、准备、解析、初始化这五个阶段。其中加载、验证、准备、初始化顺序是固定的解析可能在初始化之前也可能在初始化之后为什么呢因为Java支持运行时绑定也就是我们说的多态所以解析发生的时机不一定。注意按顺序开始不一定是按顺序结束因为有些阶段执行时间较长。类加载过程让我们看一下类加载过程中每一阶段大概都做了什么事情让我们看一下类加载过程中每一阶段大概都做了什么事情加载查找并加载类的二进制数据。连接验证确保被加载的类的正确性。文件格式验证元数据验证字节码验证符号引用验证准备 为类的静态变量分配内存并将其初始化为默认值。解析把类中的符号引用转换为直接引用。初始化为类的静态变量赋予正确得到初始值JVM负责对类进行初始化主要对类变量进行初始化。类加载器四种类加载器JVM自带了三种类加载器依次为下面前三个如果有必要我们还可以加入自定义的类加载器实现更灵活的加载方式比如从特定的场所取得java class例如数据库中和网络中、动态创建类、自动验证数字签名等等。BootStrapClassLoader启动类加载器加载(/JDK/JRE/LIB/ java.)ExtClassLoader扩展类加载器加载(/JDK/JRE/LIB/EXT javax.)AppClassLoader应用类加载器加载(ClassPath自己写的类)*ClassLoader用户自定义类加载器他们存在层级关系但是并不是通过继承实现的而是通过组合如下图双亲委派模型如果一个类加载器收到了类加载的请求它首先不会自己去尝试加载这个类而是把请求委托给父加载器去完成依次向上因此所有的类加载请求最终都应该被传递到顶层的启动类加载器中只有当父加载器在它的搜索范围中没有找到所需的类时即无法完成该加载子加载器才会尝试自己去加载该类。以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。