Java常见面试题之类的加载过程

程序员似乎有着光明的就业前景,但他们无法逃避各级面试。没有五方、六方、七方和八方,大公司是不可能前进的。找工作的第一个障碍是笔试。如果你想得到一份高薪的工作,先回答一大堆面试问题。

类加载过程主要包括七个方面:加载、验证、准备、解析、初始化、使用和卸载。下面逐一描述。

1、装载

在加载阶段,虚拟机主要完成三件事情:

1。获取按类的完全限定名定义类的二进制字节流。

2。将字节流表示的静态存储结构转换为方法区域的运行时数据结构。

三。生成一个Java。在Java堆中表示此类的Lang.class对象,作为对方法区域数据的访问条目

2、验证

验证阶段的功能是确保类文件的字节流中包含的信息符合JVM规范,并且不损害JVM。如果验证失败,将引发java.lang.verifyError异常或其子类异常。验证过程分为四个阶段

1。文件格式验证:验证字节流文件符合类文件格式规范,并且当前虚拟机可以正确处理。

2。元数据验证:对字节码描述的信息进行语义分析,以确保所描述的信息符合Java语言的规范。

三。字节码验证:主要用于数据流和控制流分析,以确保验证类的方法在运行时不会危及虚拟机。

4。符号引用验证:当虚拟机将符号引用转换为直接引用时,将进行符号引用验证,并且此转换将在分析阶段进行。

三。制备

准备阶段为变量分配内存,并设置类变量的初始化。在这个阶段,只分配类的变量(由静态修改的变量),而不分配类的实例变量。对于不再是最终变量的变量,jvm将其设置为零,而不是其赋值语句的值:

pirvate static int大小=12;

所以在这个阶段,大小的值是0,而不是12。最后修改的类变量将分配给实际值。

4、分析

解析过程是用直接引用替换常量池中的符号引用。主要包括四种引文分析。类或接口分析、字段分析、方法分析、接口方法分析。

5。初始化

在准备阶段,类变量已经初始化一次。在这个阶段,类变量和其他资源根据程序员的程序计划进行初始化。这些资源包括静态块、构造函数、父类的初始化等。

至于使用和卸载阶段,这里没有更多的解释。使用过程根据程序定义的行为执行,卸载由GC完成。

为了使学习变得简单高效,今天我们将免费共享一套Java教学资源。帮助您克服成为Java架构师的困难。欢迎来到学习交流小组了解信息:479 749 726

猜你喜欢

转载自blog.csdn.net/qq_41552245/article/details/87861185