2022-08-04 22:13

什么是JVM,JVM和JDK、JRE之间的关系

王姐姐

JavaEE

(1192)

(0)

收藏

1.什么是jvm?

(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的。

(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域。

(3)JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。

 

2.jdk、jre、jvm是什么关系?

(1)JRE(Java Runtime Environment),Java 运行时环境,主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。它相对于 jvm 来说,多出来一部分的 Java 类库。所有的java程序都要在JRE环境下才能运行。

(2)JDK(Java Development Kit),是开发者用来编译、调试程序用的开发工具包。jdk 是整个 Java开发的核心,它集成了 jre 和一些好用的小工具。例如:javac,java,javadoc,jar 等。

(3)JVM(Java Virtual Machine),是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。

Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台,一次编写,多处运行。

总体来说就是,我们利用JDK(调用JAVA API)开发了JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。

 1.png

3.JVM原理

(1)jvm是java的核心和基础,在java编译器和os平台之间的虚拟处理器,可在上面执行字节码程序。

(2)java编译器只要面向jvm,生成jvm能理解的字节码文件。java源文件经编译成字节码程序,通过jvm将每条指令翻译成不同的机器码 ,通过特定平台运行。

 2.png

4. JVM执行程序的过程

(1) 加载.class文件

(2) 管理并分配内存

(3) 执行垃圾收集

JVM在整个jdk中处于最底层,负责于操作系统的交互,用来屏蔽操作系统环境,

提供一个完整的Java运行环境,因此也就虚拟计算机。

操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成:

(1) 创建JVM装载环境和配置

(2) 装载JVM.dll

(3) 初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例

(4) 调用JNIEnv实例装载并处理class类。


0条评论

点击登录参与评论