Java-类加载过程

一、请你讲讲类的加载过程以及双亲委派模型
x一个.java文件从编码到最终执行,一般需要两个主要的过程:
1、编译:将.java文件,通过javac命令编译成字节码文件
2、运行:将编译生成.class文件交给JVM执行
在这里插入图片描述
二、类加载过程对应的class对象的过程
类加载过程指的是JVM虚拟机把.class文件中类的信息加载进内存,并运行解析生成对应的class对象
JVM不是一开始就把所有的类加载进内存,而是在执行代码过程中,遇到这个类,此时内存中并没有这个类的相关信息,因此JVM就去.class文件中去找,找到这个类对应的.class文件后,把它加载进内存中,这就是类加载过程。
在这里插入图片描述
这里的类加载过程分为以下3个步骤:
加载:将class字节码文件从各个来源通过类加载器装入内存中
链接:分为三个步骤:验证:保证class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危及虚拟机本身的安全。(文件格式检验、元数据检验、字节码检验、符号引用检验)
准备:为类变量分配内存并设置类变量的初始值。
解析:JVM将常量池内的符号引用替换为直接引用的过程。
初始化:执行类构造器方法的过程,以及真正初始化类变量和其他资源的过程。
三、双亲委派
当需要加载一个类的时候,子类加载器并不会马上去加载,而是依次去请求父类加载器加载,一直往上请求到最高类加载器:启动类加载器。当启动类加载器加载不了的时候,依次往下让子类加载器进行加载。当达到最底下的时候,如果还是加载不到该类,就会出现ClassNotFound的情况。
好处:保证了程序的安全性。

猜你喜欢

转载自blog.csdn.net/Subuprogrammer/article/details/107359636