当前位置:网站首页>Interpretation and compilation of JVM

Interpretation and compilation of JVM

2022-04-23 18:14:00 The hunter is eating meat

1、 principle

Bytecode cannot be directly handed over to hardware for execution. Virtual machine is required translate become Machine code To perform ,“ translate ” There are two strategies : Explain to perform and Compile implementation , also called Just in time compilation (JIT).

  • Explain to perform ,

    • Run bytecode in interpreted mode ,
    • Explanation execution means Read a sentence , Execute a sentence .

    Advantage is Fast start-up efficiency ,
    The disadvantage is that The overall execution speed is slow .

  • Compile implementation ,

    • Compile bytecode into machine code
    • Execute machine code directly
    • Compile at run time
    • After compiling , There's an order of magnitude improvement in performance .

    Its characteristics are opposite to interpretation and execution , Slow start , Fast execution .

stay jvm In the virtual machine, the two are mixed , There are both interpretation execution and compilation execution . First of all Explain to perform , Execute all bytecodes one by one , If JVM If a method is found to be called frequently, it will be compiled with the strategy of compilation and execution , Call the machine code directly the next time , This method is called Hot methods , thus it can be seen , Compile implementation Is in terms of method .

From a business perspective , The server and the client have different requirements for the execution speed and startup speed of the code .
such as , Mobile applications , Users want the program to start faster .
The server program , There may be higher requirements for the execution speed of the program .

So , from java7 Start , HotSpot Layered compilation is adopted , That is, two compilers are introduced :C1、C2.
  
C1 compiler , be called client compiler , For clients that require startup performance , Compilation period , The optimization strategy is simple ;

C2, be called Serve compiler , Server side with peak performance requirements , Long compilation time , The optimization strategy is complex .

Specifically, when compiling hotspot methods , First use C1 compiler , The hotspot method in the hotspot will be C2 The compiler compiles again .

2、JVM Related parameters

-Xint : Explain the pattern , Do not activate JIT compiler ( namely CompileThreshold=0).

-Xcomp : Compile mode , Appoint JVM Compile all bytecodes into local code when used for the first time .( namely CompileThreshold=1).
explain :comp:Compile

-Xmixed : Mixed mode execution ,-Xint-Xcomp Two mixed use , That is, the interpretation mode and Compile mode A mixture of .

-Xbatch : Compile methods in the foreground , The method cannot execute until the compilation is complete .

-XX:CICompilerCount=n : Appoint JIT The number of threads the compiler uses to compile methods .

-XX:CompileThreshold=n : Specifies the number of calls to a method , In order to make HotSpot and JIT The compiler can compile it .

3、JVM Three models of

int Pattern : use -Xint Turn on , namely Explain the pattern , In this mode, all take the interpretation mode to run .

comp Pattern : use -Xcomp Turn on , In this mode, notify JVM close Explain the pattern , use Compile mode function . But it often leads to poor automatic optimization .

mixed Pattern : use -Xmixed Turn on , Namely, mixed operation mode , It's also Hotspot Default mode .

版权声明
本文为[The hunter is eating meat]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204210611118516.html