概括
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
官方文档地址(jdk11):https://docs.oracle.com/javase/specs/jvms/se11/html/
The Java Virtual Machine kNows nothing of the Java programming language, only of a particular binary format, the class file format. A class file contains Java Virtual Machine instructions (or bytecodes) and a symbol table, as well as other ancillary @R_131_4045@ion.
Java虚拟机并不认识java语言,只知道一种特定的二进制格式(以CA FE BA BE开头)的字节码文件(.class)。类文件包含Java虚拟机指令(或字节码)和符号表,以及其他辅助信息。
作用
Java虚拟机是二进制字节码的运行环境,负责加载字节码,将其编译为对应平台上的机器指令执行。
特点
1:一次编译,到处运行
2:自动内存管理
3:自动垃圾回收功能
位置
整体结构
架构模型
Java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。
基于栈式
1:设计和实现更简单,适用于资源受限的系统
2:避开了寄存器的分配难题:使用零地址指令方式分配
3:指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现
4:不需要硬件支持,可移植性更好,更好实现跨平台
基于寄存器
1:指令集架构则完全依赖硬件,可移植性差性能优秀和执行更高效
2:花费更少的指令去完成一项操作
3:在大部分情况下,基于寄存器架构的指令集往往都以一地址指令、二地址指令和三地址指令为主,而基于栈式架构的指令集却是以零地址指令为主
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。