jvm是什么
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。编译虚拟机的指令集与编译微处理器的指令集非常类似。
JVM系统结构
JVM的内部体系结构分为三部分
(1)类装载器子系统:主要用于装载class文件
(2)执行引擎:主要用于执行字节码,或者执行本地方法
(3)运行时数据区:分为:方法区,堆,java栈,PC寄存器,本地方法栈
jvm的原理
JVM是Java字节码执行的引擎,为java程序的执行提供必要的支持,它还能优化java字节码,使之转换成效率更高的机器指令。它就像一个舞台,我们编写的程序最终都要在这个舞台上亮相。JVM的实现为JRE中的共享类库,需要遵循JVM规范,每个公司或个人都可以实现自己的JVM,Sun 目前采用的JVM叫做HotSpot。
在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。