当前位置: 首页 > 网络应用技术

在对Java类加载机制的深入了解中(图形的详细说明)

时间:2023-03-08 20:53:32 网络应用技术

  通过完整的路径(即二进制文件)找到此类字节代码文件。将二进制文件的静态存储结构转换为方法区域的数据结构,并使用二进制流文件创建类对象,并存储在法国地区数据结构的数据结构参考的入口处;

  JVM将在此阶段检查二进制字节流。只有那些符合JVM字节码规范的人才能由JVM正确执行。该阶段是确保JVM安全性的重要障碍,以及以下一些主要检查。

  JVM将在此阶段分配内存和合并的初始化(也称为静态变量,关键字修改)(对应于数据类型的默认初始值,例如0、0L,NULL,NULL,FALSE等)。

  目前,实例变量的内存将无法分配,因为实例化对象时,实例变量是在Java桩中创建的。int类型的值为0,参考类型零值为null,而不是代码中显示的值。

  在此阶段,常数池中的符号被引用为直接参考。

  文字卷和符号引用存储在类文件中的常数池中。符号引用包括界面的完整名称和字段以及接口的名称和描述。

  当JVM动态链接是动态的时,有必要根据这些符号引用将其转换为直接引用到存储器使用。

  此阶段是类加载过程的最后一步。在准备阶段,类变量已得到默认初始值,在初始化阶段,类变量将分配给代码期望的值。单词,初始化阶段是执行构造方法的过程。

  1.创建一个Java源文件test02.java并在主方法中完成完整的简单逻辑操作,如下所示:

  2.通过Javac命令在终端中编译Helloworld.java。

  3.反向汇编为我们可以理解的JVM指令。在这里,我们使用Javap -c命令完成。

  4.反复作用后的JVM指令如下所示:

  说明上述JVM上述说明

  第1行表示当前字节码文件汇编。

  第3行表示未打开的构造函数的调查以实例化当前对象。

  第4行至第七行指示执行过程,而无需构建功能。

  第5行意味着将其按下操作堆栈。

  第6行表示test02父类对象的非施法结构。我们知道,当每个对象实例化时,每个对象都会立即实例化其父类,并且默认情况下调用了父级非秘密结构。

  第7轮返回表示执行构造函数。

  第10行22行指示主方法的执行过程。

  第11行表示将常数5按在操作号码堆栈中。

  第12行表示操作号码堆栈的最高元素,即5,然后将其保存到本地变量表的第一个位置,即变量i。

  第13行表示将常数10按在操作号码堆栈中。

  第14行指示操作号堆栈的顶部元素,即10,然后将其保存到本地变量表的第二位置,即变量j。

  第15行表示,将第一个变量(i)按在操作号码堆栈中。

  第16行指出,将局部变量表(J)的第二个变量(J)按下操作号码堆栈。

  第17行表示添加了操作号码堆栈中的前两个值,并将结果按在操作号码堆栈的顶部。

  第18行表示操作号码堆栈的最高元素保存到本地变量表的第三位置,即变量k。

  第19行指示读取静态实例printstream。

  第20行表示,将局部变量表的第三变量(k)按在操作号码堆栈中。

  第21行是指调用PrintStream的Println方法输出操作号码堆栈元素(变量K)。

  第22行返回意味着执行主方法。

  作者:第一次思考和初恋