当前位置:网站首页>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 a Software , Used to execute a series of virtual computer instructions . Broadly , Virtual machines can be divided into System virtual machine and Program 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 VM It 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
     
原网站

版权声明
本文为[A lazy bug]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207061932483246.html