JVM-JVM简介

JVM简介

 
JVM 全称是Java Virtual Machine,Java 虚拟机,也就是在计算机上再虚拟一个计算机。不同于VMWare,JVM是不可见的,存在于内存中。
 
计算机组成元素:运算器、控制器、存储器、输入和输出设备。JVM不仅有硬件架构,如处理器、堆栈(Stack)、寄存器等;还有相应的指令系统(字节码就是一种指令格式)。
 

JVM的组成部分

 
 
JVM运行在操作系统之上,不直接与硬件交互。
 
 

JVM构成图(网上广为流传),JVM分为四部分:

  • Class Loader 类加载器(子系统)

类加载器的作用是加载类文件到内存,比如编写一个HelloWord.java程序,然后通过javac 编译成HelloWorld.class文件。Class Loader负责加载HelloWorld.class文件到“运行数据区”。

注:Class Loader只负责加载.class文件,执行由Execution Engine负责。

  • Execution Engine 执行引擎(子系统)

执行引擎也叫做解释器(Interpreter),负责解释命令、执行class文件中的指令,与操作系统交互。

  • Native Interface 本地接口(组件)​​​​​​​

本地接口主要用于融合不同的编程语言为Java所用。Java诞生时C/C++是主流编程语言,过去使用C++编写的网站之后改为用Java实现。但是不能抛弃所有过去的代码,因此需要在新的网站中编写接口,调用过去C/C++程序。具体实现:在内容中开辟一块区域并标记为native,Execution Engine 执行时加载native libraies。常见的应用(与硬件相关):通过Java程序驱动打印机、Java 系统管理生产设备。

使用native方法时,不再受JVM限制,容易出现JVM无法控制的native heap OutOfMemory。

  • Runtime data area 运行数据区(组件,即JVM内存)​​​​​​​

程序完全被加载至运行数据区之后才开始运行。

 

JVM框架运行流程:加载器加载文件 → 执行器处理数据 → 本地接口与异构系统交互。

java.exe将class文件放在JVM中运行。JVM加载class文件并处理class文件内容,java.exe将字节码解释或者编译为机器指令,执行指令时会与计算机交互。

JVM将每一条需要执行的字节码交给解释器,解释器将字节码翻译成对应的机器码,解释器执行机器码(如需与OS交互,解释器会与OS交互。)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章