当前位置:网站首页>尚硅谷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的宿主环境已经不局限于嵌入式平台了),那么为什么不将架构更换为基于寄存器的架构呢?
- 因为基于栈的架构跨平台性好、指令集小,虽然相对于基于寄存器的架构来说,基于栈的架构编译得到的指令更多,执行性能也不如基于寄存器的架构好,但考虑到其跨平台性与移植性,我们还是选用栈的架构
边栏推荐
- Unity使用MaskableGraphic画一条带箭头的线
- Dotconnect for DB2 Data Provider
- Use of promise in ES6
- 从控制理论的角度谈数据分析
- NuScenes数据集关于Radar数据的统计
- MMDetection3D加载毫米波雷达数据
- What are the applications and benefits of MES management system
- Work of safety inspection
- wzoi 1~200
- Five reasons for clothing enterprises to deploy MES management system
猜你喜欢

Install redis from zero
![[socket] ① overview of socket technology](/img/91/dccbf27a17418ea632c343551bccc0.png)
[socket] ① overview of socket technology

How to write test cases for test coupons?

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

wireshark安装

Detailed explanation of 19 dimensional integrated navigation module sinsgps in psins (time synchronization part)

一文读懂Faster RCNN

Remember the problem analysis of oom caused by a Jap query
![[secretly kill little partner pytorch20 days] - [Day1] - [example of structured data modeling process]](/img/f0/79e7915ba3ef32aa21c4a1d5f486bd.jpg)
[secretly kill little partner pytorch20 days] - [Day1] - [example of structured data modeling process]

How to design interface test cases? Teach you a few tips to draft easily
随机推荐
惯导标定国内外研究现状小结(删减版)
Redis getting started complete tutorial: client management
Mmdetection3d loads millimeter wave radar data
Google Earth Engine(GEE)——Landsat 全球土地调查 1975年数据集
Redis introduction complete tutorial: client case analysis
新标杆!智慧化社会治理
Andrews - multimedia programming
A complete tutorial for getting started with redis: RDB persistence
AWS learning notes (I)
[software test] the most complete interview questions and answers. I'm familiar with the full text. If I don't win the offer, I'll lose
Five reasons for clothing enterprises to deploy MES management system
Fundamentals of process management
Introduction to ins/gps integrated navigation type
数论 --- 快速幂、快速幂求逆元
Contribution of Writing Series
Unity webgl adaptive web page size
S120驱动器基本调试步骤总结
Redis入门完整教程:RDB持久化
一文读懂Faster RCNN
Django database (SQLite) basic introductory tutorial