类加载的大致过程
编写.java文件,该文件存储的程序需要执行的逻辑内容,将.java经过Java编译器编译之后生成对应的.class后缀文件,class文件是.java文件经过转换之后的JVM虚拟机指令,当需要加载某个类的时候,JVM虚拟机会将对应的class文件加载,并创建对应的class对象,将class文件加载到JVM虚拟机的内存中,这个过程就是类加载。类加载器的任务就是读取一个类的二进制流到JVM中,然后转换为一个与目标类对应的java.lang.Class对象实例
类加载的详细过程
第一步 加载
查找一个类的class文件,创建一个class对象
第二步 验证
验证Class文件的字节流信息是否符合JVM虚拟机要求,不会危害JVM虚拟机,主要包括四种验证,即文件格式验证、元数据验证、字节码验证、符号引用验证。
第三步 准备
为类变量(static修饰的变量)分配内存,并设置,该类变量的初始值为0(static int i = 5,这里只会将i初始化为0),值5将在初始化时赋值)当然不包括final修饰的static,因为final在编译的时候就会分配,不会为实例变量分配初始化,类变量会分配在方法区中,而实例变量是会随着对象一起分配到Java堆中
第四步 解析
将常量池中的符号引用替换成直接引用。符号引用就是用一组符号来描述目标,而直接引用就是直接指向目标的指针、相对偏移量或者间接定位目标的句柄。
第五步 初始化
类加载最后阶段,若类具有超类,则对其进行初始化,执行静态初始化器和静态初始化成员变量
标签:初始化,文件,验证,理解,JVM,简单,class,加载 From: https://www.cnblogs.com/HelloCTF/p/17121323.html