当前位置:网站首页>JVM(1):介绍、结构、运行和生命周期
JVM(1):介绍、结构、运行和生命周期
2022-06-11 04:05:00 【游王子】
一、虚拟机
所谓虚拟机(Virtual Machine),就是一台虚拟的计算机,它是一款软件,用来执行一系列虚拟计算机指令。大体上虚拟机可分为系统虚拟机和程序虚拟机。
- 大名鼎鼎的Visual Box,VMWare就属于系统虚拟机,它们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。
- 程序虚拟机的一个典型代表就是java虚拟机,它专门为执行单个计算机程序而设计,在java虚拟机中执行的指令我们称为java字节码指令。
无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。
二、java虚拟机
java虚拟机是一台执行java字节码的虚拟计算机,它拥有独立的运行机制,其运行的java字节码也未必是由java语言编译而成。
JVM平台的各种语言可以共享java虚拟机带来的跨平台性,优秀的垃圾回收机制以及可靠的即时编译器。java技术的核心就是java虚拟机(JVM,Java Virtual Machine),因为所有的java程序都运行在java虚拟机内部。
作用
java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条java指令,java虚拟机规范中都有详细定义,如怎么取操作数,怎么处理操作数,处理结果放在哪里。
特点
- 一次编译,到处运行。
- 自动内存管理。
- 自动垃圾回收功能。
三、JVM的位置

JDK的构成

四、JVM整体结构
- Hotspot VM是目前市面上高性能虚拟机的代表作之一。
- 它采用解释器与即时编译器并存的架构。
- 在今天,Java程序的运行性能早己脱胎换骨,已经达到了可以和C/C++程序一较高下的地步。

方法区和堆是多个线程共享的,而java栈、本地方法栈和程序计数器为每个线程独有一份。
执行引擎

红色框中就是执行引擎,从左到右分别为:解释器、JIT即时编译器、垃圾回收器。
JIT即时编译器为编译器的后端(java源码编译为class文件也可以成为编译器前端),因为字节码文件无法调用本地机器程序的,需要将字节码编译为本地机器语言。
五、java代码执行流程

下图为详细图:

- 解释执行:保证响应时间,逐行对字节码文件进行响应执行。
- 编译执行:将重复性较高的字节码(热点代码)编译为机器指令(二次编译)并缓存起来。
六、JVM架构模型
Java编译器输入的指令流基木上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。具体来说,这两种架构之间的区别:
基于栈式架构的特点
- 设计和实现更简单,适用于资源受限的系统。
- 避开了寄存器的分配难题:使用零地址指令方式分配。
- 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现。
- 不需要硬件支持,可移植性更好,更好实现跨平台。
基于寄存器架构的特点
- 典型的应用是x86的二进制指令集;比如传统的Pc以及Android的Davlik虚拟机。
- 指令集架构则完全依赖硬件,可移植性差
- 性能优秀和执行更高效。
- 花费更少的指令去完成一项操作。
- 在大部分情况下,基于寄存器架构的指令集往往都以一地址指令、二地址指令和三地址指令为主,而基于栈式架构的指令集却是以零地址指令为主。

总结:
由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。
时至今日,尽管嵌入式平台已经不是Java程序的主流运行平台了(准确来说应该是HotSpotVM的宿主环境已经不局限于嵌入式平台了),那么为什么不将架构更换为基于寄存器的架构呢?
七、JVM生命周期
虚拟机的启动
Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。
虚拟机的执行
- 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。·
- 程序开始执行时它才运行,程序结束时它就停止。
- 执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程。
虚拟机的退出
有如下的几种情况:
- 程序正常执行结束
- 程序在执行过程中遇到了异常或错误而异常终止
- 由于操作系统出现错误而导致Java虚拟机进程终止
- 某线程调用Runtime类或system类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作。
- 除此之外,JNI ( Java Native Interface)规范描述了用JNI Invocation API来加载或卸载Java虚拟机时,Java虚拟机的退出情况。
边栏推荐
- Vulkan-官方示例解读-RayTracingShadows&在这里边使用模型(1)
- Esp32 development -lvgl uses internal and external fonts
- 【CustomView】Glide+BitmapTransformation 图片上下边框波浪处理(WaveTransformation)
- Unity prefab scene 冲突合并工具 UnityYAMLMerge
- A - Eddy's AC puzzle (C language)
- This artifact is highly recommended. One line command will convert the web page to PDF!
- Market prospect analysis and Research Report of beam combiner in 2022
- 密码找回功能可能存在的问题(补充)
- 司马炎爷爷 告诉你什么叫做内卷!
- Embedded basic interface -spi
猜你喜欢

未来已来,5G-Advanced时代开启

Guanghetong LTE Cat4 module l716 is upgraded to provide affordable and universal wireless applications for the IOT industry

Code replicates CSRF attack and resolves it

Esp32 development -lvgl uses internal and external fonts

为了实现零丢包,数据中心网络到底有多拼?

Discussion on the development trend of remote power management unit (Intelligent PDU)

Zhongang Mining: fluorochemical industry is the main consumption field of fluorite

L'avenir est venu, l'ère 5G - Advanced s'ouvre

你知道MallBook分账与银行分账的区别吗?

Safe and borderless, Guanghe tongdai 5g module +ai intelligent security solution shines at CPSE Expo
随机推荐
Esp32 development -lvgl uses internal and external fonts
Some differences between people
Market prospect analysis and Research Report of modular lithium ion battery in 2022
How does the NTP clock server (satellite clock system) coordinate the integrated system?
Several time synchronization methods of Beidou timing system (GPS timing equipment)
[pan micro E9 development] single sign on Kingdee eas
Matter protocol
邪恶的CSRF
Eth Transfer
Market prospect analysis and Research Report of engraving laser in 2022
JVM(6):Slot变量槽、操作数栈、代码追踪、栈顶缓存技术
未来已来,5G-Advanced时代开启
Image detection related model data format
How PTP helps several major operators meet 5g timing requirements
Market prospect analysis and Research Report of welding laser in 2022
Eth Of Erc20 And Erc721
App live broadcast source code, platform login page and password modification page
Source Insight 4.0设置注释与反注释的快捷键
强烈推荐这款神器,一行命令将网页转PDF!
Possible problems with password retrieval function (supplementary)