什么是jvm?
java虚拟机就是二进制字节码的运行环境。我们可以把jvm看做是运行在不同系统上的一个软件应用的计算机,就比如说我们要打开图片,就得用看图软件,或者我们要对文件进行解压,是不是得用解压软件。就可以把它看出是一个软件,但是它是虚拟的,而且它是不与硬件是直接交互。
jvm是干啥的?
Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。jvm 只对字节码负责,就像函数式的关系,他不用关心是有什么语言编译的,只关心,编译后的字节码是否符合JVM 的规定,任何语言编译后的字节码文件只要符合jvm标准,然后都是可以在jvm上运行
虚拟机的作用
Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条Java指令,Java虚拟机规范中都有详细定义,如怎么取操作数,怎么处理操作数,处理结果放在哪里。这个也就是java跨平台性的根本原因。
特点:
1,一次编译,到处运行
2,自动内存管理
3,自动垃圾回收功能
虚拟机的历史
现在流行的三大虚拟机:
-
Hotspot
-
-
IBM 的 J9
我们平时所说的就是Hotsprot虚拟机
jvm的架构模型
Java编译器输入的指令流基木上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。
基于栈式架构的特点:
-
设计和实现更简单,适用于资源受限的系统;
-
指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小编译器容易实现。
-
不需要硬件支持,可移植性更好,更好实现跨平台·基于寄存器架构的特点。
总结:
由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。
jvm的生命周期
虚拟机的启动:
Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。
虚拟机的执行
-
一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。
-
程序开始执行时他才运行,程序结束时他就停止。
-
执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程。
jvm的内存模型:
如果对jvm内存模型不太了解可以参考文章:java内存区域模型和详解 – 古渡蓝按 – 博客园 (cnblogs.com)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/206854.html