当前位置:网站首页>Shangsilicon Valley JVM Chapter 1 class loading subsystem
Shangsilicon Valley JVM Chapter 1 class loading subsystem
2022-07-07 03:13:00 【A lazy bug】
1、 Virtual machine introduction
The so-called virtual machine (Virtual Machine), It's just one
Virtual computers. It's aSoftware, Used to execute a series of virtual computer instructions . Broadly , Virtual machines can be divided intoSystem virtual machineandProgram virtual machine.
- big-name Virtual Box,VMware It belongs to the system virtual machine , They are all simulations of physical computers , It provides a software platform that can run a complete operating system .
- A typical example of a program virtual machine is Java virtual machine , It's designed to execute a single computer program , stay Java The instructions executed in the virtual machine are called Java Bytecode instruction .
- Whether it's a system virtual machine or a program virtual machine , The software running on it is limited to the resources provided by the virtual machine .
2、Java virtual machine
- Java A virtual machine is an execution machine Java Bytecode virtual computer , It has an independent operating mechanism , It runs Java Bytecode may not be created by Java Language compilation .
- JVM Various languages of the platform can be shared Java The cross platform nature of virtual machine 、 Excellent garbage collector , And a reliable just in time compiler .
- Java The core of technology is Java virtual machine (JVM,Java Virtual Machine), Because of all the Java The program is running in Java Inside the virtual machine .
- Java Virtual machine is the running environment of binary bytecode , Responsible for loading bytecode into its interior , explain / Compile to execute machine instructions on the corresponding platform . Every one of them Java Instructions ,Java There are detailed definitions in the virtual machine specification , How to get the operands , How to deal with operands , Where is the result of the treatment .
3、JVM Overall structure
HotSpot VMIt is one of the representative works of high performance virtual machine on the market .- It uses an interpreter and just in time compiler architecture .
- In today's ,Java The performance of the program has been completely changed , Have reached the point where you can and C/C++ The program is higher and lower .
- The execution engine consists of three parts :
Interpreter,Just in time compiler,Garbage collector

4、JVM Architectural model
Java The flow of instructions input by the compiler is basically a Stack based instruction set architecture , Another instruction set architecture is Register based instruction set architecture . say concretely : The difference between the two architectures :
Based on the characteristics of plank structure
- Simpler design and Implementation , For systems with limited resources
- Avoid the problem of register allocation : Use zero address instruction to assign
- Most of the instructions in the instruction stream are zero address instructions , Its execution depends on Stack operation . The instruction set is smaller , The compiler is easy to implement
- No hardware support required , Better portability , Better Cross platform implementation
Based on the characteristics of register architecture
- The typical application is x86 The binary instruction set of : Like traditional PC as well as Android Of Davlik virtual machine .
- Instruction set architecture Rely entirely on hardware , High coupling with hardware , Poor portability
- Better performance and more efficient execution
- Spend less instruction to complete an operation
- In most cases , The instruction set based on register architecture usually uses one address instruction 、 Two address instructions and three address instructions are the main , The instruction set based on the stack architecture is mainly zero address instruction
5、 summary
- Because of the cross platform design ,Java The instructions of are designed according to the stack . Different platforms CPU Different architectures , So it can't be designed as register based . The advantage is cross platform , Instruction set is small , The compiler is easy to implement , The disadvantage is that the performance is reduced , More instructions are needed to implement the same function
- today , Although embedded platforms are no longer Java The mainstream running platform of the program ( To be exact, it should be HotSpot VM Our host environment is no longer limited to embedded platforms ), So why not change the architecture to register based architecture ?
- Because stack based architecture Good cross platform 、 Instruction set is small , Although compared with register based architecture , Stack based architecture compiles more instructions , The execution performance is not as good as register based architecture , But considering its Cross platform and portability , We still choose the stack architecture
边栏推荐
- Nuggets quantification: obtain data through the history method, and use the same proportional compound weight factor as Sina Finance and snowball. Different from flush
- Redis入門完整教程:問題定比特與優化
- Qt蓝牙:QBluetoothDeviceInfo
- Introduction to ins/gps integrated navigation type
- 从0开始创建小程序
- 杰理之电话本获取【篇】
- Kubernetes源码分析(二)----资源Resource
- Unity uses maskablegraphic to draw a line with an arrow
- How to verify accesstoken in oauth2 protocol
- Make (convert) ICO Icon
猜你喜欢

mos管实现主副电源自动切换电路,并且“零”压降,静态电流20uA

Redis introduction complete tutorial: client case analysis

Utilisation de la promesse dans es6

Unity使用MaskableGraphic画一条带箭头的线
![[tools] basic concept of database and MySQL installation](/img/9c/626e42097050517a13a2ce7cdab1bb.jpg)
[tools] basic concept of database and MySQL installation

硬件之OC、OD、推挽解释

MOS transistor realizes the automatic switching circuit of main and auxiliary power supply, with "zero" voltage drop and static current of 20ua

A complete tutorial for getting started with redis: problem location and optimization

A complete tutorial for getting started with redis: AOF persistence

又一百万量子比特!以色列光量子初创公司完成1500万美元融资
随机推荐
Left value, right value
c语言(字符串)如何把字符串中某个指定的字符删除?
尚硅谷JVM-第一章 类加载子系统
Unity uses maskablegraphic to draw a line with an arrow
Unity使用MaskableGraphic画一条带箭头的线
Data analysis from the perspective of control theory
Cryptography series: detailed explanation of online certificate status protocol OCSP
知识图谱构建全流程
Redis introduction complete tutorial: replication principle
2022年信息安全工程师考试大纲
QT Bluetooth: qbluetooth DeviceInfo
Domcontentloaded and window onload
[cpk-ra6m4 development board environment construction based on RT thread studio]
Redis getting started complete tutorial: replication topology
Nuggets quantification: obtain data through the history method, and use the same proportional compound weight factor as Sina Finance and snowball. Different from flush
uniapp适配问题
杰理之FM 模式单声道或立体声选择设置【篇】
Redis introduction complete tutorial: client case analysis
leetcode
Form validation of uniapp