Java 虚拟机是什么?
虚拟机这个词对于Java的开发者应该都知道,但是对于初学者对它还是了解较少。Java 虚拟机是Java语言的核心技术,是Java程序的运行环境,为了解决程序跨平台而生。
Java是跨平台的语言,Java虚拟机可以称为跨语言的平台, 应该好理解吧。它是如何实现跨平台的呢?我们在安装jdk(Java 集成开发工具,其中内嵌Java运行环境)时可以看到有很多对应不同系统的版本,针对不同的系统开发不同的 jdk 是 Java 语言能够跨平台的重点,编译后的Java字节码运行在虚拟机上,虚拟机将字节码指令翻译成对应的机器指令运行程序,不同的系统底层架构不同,使用的指令集也不尽相同,与系统对应的 jdk 可以将字节码指令翻译成自己能够执行的指令,所以相同的字节码在不同的系统上使用不同版本的 Java 虚拟机都可以正常运行了。因此 Java 程序可以一次编译到处运行。
Hotspot 虚拟机的架构模型
Java 虚拟机(Java 使用的虚拟机是 Hotspot 虚拟机)的架构模型如下图所示:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z4c5I05a-1638285985655)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20211103110707322.png)]](https://img-blog.csdnimg.cn/bf702899e6fc40eb98ae12419b38a4c3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6J5ZOl5ouJ6ZW_5q-b5YWU44CC,size_20,color_FFFFFF,t_70,g_se,x_16)
其主要分为三个部分,简单介绍下每个部分主要负责的功能:
- 类加载器子系统:负责将字节码文件加载到内存中,也就是虚拟机种的运行时数据区。
- 运行时数据区: 程序运行时的所有数据存放的内存区域。
- 字节码执行引擎: 将字节码执行翻译成机器指令最终在物理机上运行。
|