当前位置:网站首页>尚硅谷JVM-第一章 类加载子系统
尚硅谷JVM-第一章 类加载子系统
2022-07-06 19:33:00 【一只懒惰的小虫子】
1、虚拟机介绍
所谓虚拟机(Virtual Machine),就是一台
虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。
- 大名鼎鼎的Virtual Box,VMware就属于系统虚拟机,它们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。
- 程序虚拟机的典型代表就是Java虚拟机,它专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为Java字节码指令。
- 无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。
2、Java虚拟机
- Java虚拟机是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成。
- JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回器,以及可靠的即时编译器。
- Java技术的核心就是Java虚拟机(JVM,Java Virtual Machine),因为所有的Java程序都运行在Java虚拟机内部。
- Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条Java指令,Java虚拟机规范中都有详细定义,如怎么取操作数,怎么处理操作数,处理结果放在哪里。
3、JVM的整体结构
HotSpot VM是目前市面上高性能虚拟机的代表作之一。- 它采用解释器与即时编译器并存的架构。
- 在今天,Java程序的运行性能早已脱胎换骨,已经达到了可以和C/C++程序一较高下的地步。
- 执行引擎包含三部分:
解释器,即时编译器,垃圾回收器

4、JVM架构模型
Java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。具体来说:这两种架构之间的区别:
基于栈式架构的特点
- 设计和实现更简单,适用于资源受限的系统
- 避开了寄存器的分配难题:使用零地址指令方式分配
- 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现
- 不需要硬件支持,可移植性更好,更好实现跨平台
基于寄存器架构的特点
- 典型的应用是x86的二进制指令集:比如传统的PC以及Android的Davlik虚拟机。
- 指令集架构则完全依赖硬件,与硬件的耦合度高,可移植性差
- 性能优秀和执行更高效
- 花费更少的指令去完成一项操作
- 在大部分情况下,基于寄存器架构的指令集往往都以一地址指令、二地址指令和三地址指令为主,而基于栈式架构的指令集却是以零地址指令为主
5、总结
- 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令
- 时至今日,尽管嵌入式平台已经不是Java程序的主流运行平台了(准确来说应该是HotSpot VM的宿主环境已经不局限于嵌入式平台了),那么为什么不将架构更换为基于寄存器的架构呢?
- 因为基于栈的架构跨平台性好、指令集小,虽然相对于基于寄存器的架构来说,基于栈的架构编译得到的指令更多,执行性能也不如基于寄存器的架构好,但考虑到其跨平台性与移植性,我们还是选用栈的架构
边栏推荐
- Django database (SQLite) basic introductory tutorial
- Google Earth Engine(GEE)——Landsat 全球土地调查 1975年数据集
- 巴比特 | 元宇宙每日必读:IP授权是NFT的破圈之路吗?它的难点在哪里?Holder该如何选择合作平台?...
- 数字滚动增加效果
- Oracle中日期的使用方法实例
- How to write test cases for test coupons?
- Detailed explanation of 19 dimensional integrated navigation module sinsgps in psins (initial assignment part)
- c语言字符串排序
- 6-6 vulnerability exploitation SSH security defense
- Safety delivery engineer
猜你喜欢

从零安装Redis

IDEA重启后无法创建Servlet文件的解决方案

Five reasons for clothing enterprises to deploy MES management system

The annual salary of general test is 15W, and the annual salary of test and development is 30w+. What is the difference between the two?

What are the applications and benefits of MES management system

Matlb| economic scheduling with energy storage, opportunity constraints and robust optimization

Es6中Promise的使用

Left value, right value

PSINS中19维组合导航模块sinsgps详解(时间同步部分)

【2022国赛模拟】多边形——计算几何、二分答案、倍增
随机推荐
MySQL - common functions - string functions
知识图谱构建全流程
uniapp的表单验证
Oauth2协议中如何对accessToken进行校验
Oracle connection pool is not used for a long time, and the connection fails
tensorboard的使用
Babbitt | metauniverse daily must read: is IP authorization the way to break the circle of NFT? What are the difficulties? How should holder choose the cooperation platform
A complete tutorial for getting started with redis: problem location and optimization
Use of promise in ES6
Hash table and full comments
MES管理系统的应用和好处有哪些
IDEA重启后无法创建Servlet文件的解决方案
Redis introduction complete tutorial: client case analysis
The panel floating with the mouse in unity can adapt to the size of text content
[2022 national tournament simulation] polygon - computational geometry, binary answer, multiplication
centerX: 用中国特色社会主义的方式打开centernet
[secretly kill little partner pytorch20 days] - [Day1] - [example of structured data modeling process]
运维管理系统有哪些特色
What are the characteristics of the operation and maintenance management system
代码调试core-踩内存