当前位置:首页 > 虚拟机 > 正文

深入理解java虚拟机的体系结构


一、什么是java虚拟机,简述其工作机制Java虚拟机位于机器和编译器之间,为任何平台上的编译器提供通用接口。Java源程序经过编译器编译成为字节码,字节码由虚拟机解释执行。然后代码在特定设备上运行。Java虚拟机的主要任务是加载类文件并执行其中的字节码。Java虚拟机包含一个类加载器,可以从程序和API加载类文件。字节码由执行引擎执行。Java虚拟机架构是Java虚拟机在安全性和网络移动性方面发挥重要作用的一方面。图中所示的类加载器可以包含多个Java应用程序的子系统,程序可以在运行时确定要安装哪些类,并将不同类加载器加载的类存储在不同的命名空间中。执行引擎是Java虚拟机的核心,它的行为由指令集决定,主要功能是解释字节码(即运行编译后的Java程序的类文件)。非常不一样。程序执行的虚拟机执行引擎分为一次性解释字节码、即时编译器和自适应优化器。硬件芯片虚拟机使用本地方法执行Java字节码,其执行引擎嵌入在芯片中。Java虚拟机相当于一个堆栈计算机,在指令之间传递信息时不使用任何物理寄存器,而是使用堆栈帧来表示方法状态、字节码的操作对象、方法的参数空间及其本地。它的“程序计数器”是一个伪寄存器,它是指向当前正在执行的指令的字节码数组的指针。Java实现方法Java有两种实现方法:Java方法和native方法。Java方法用Java编写,编译为字节码,并存储在类文件中。本机方法用其他语言(例如C、C++或汇编语言)编写,编译成与处理器相关的机器代码,并存储在动态链接库(DRAM)中并与底层主机操作系统进行通信。Java方法与平台无关,但本机方法则不然。当正在运行的Java程序调用本地方法时,虚拟机加载包含本地方法的动态库并调用该方法。通过本机方法,Java程序可以直接访问底层操作系统的资源,使得程序具有平台特定性。Java本机接口(JNI)允许在运行主机系统的任何特定Java平台上使用本机方法。