JVM-JVM简介
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交互。)。