JVM解释器和编译器
首先看一個(gè)命令
[root@insure ~]# java -version java version "1.8.0_191" Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)再看幾個(gè)名詞
Java(TM) SE Runtime Environment (build 1.8.0_191-b12) java運(yùn)行環(huán)境
hotspot包括server和client兩種模式的實(shí)現(xiàn):
Java HotSpot Client VM(-client),為在客戶端環(huán)境中減少啟動(dòng)時(shí)間而優(yōu)化;
Java HotSpot Server VM(-server),為在服務(wù)器環(huán)境中最大化程序執(zhí)行速度而設(shè)計(jì)。
mixed mode 表示是混合模式 解釋器和編譯器都有
啟動(dòng)時(shí)間上client模式較快,運(yùn)行速度上server模式較快,最重要的是server垃圾回收處理的好。
以idea為例
在配置文件D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.1\jre64\lib\amd64下有一個(gè)
jvm.cfg文件
-server KNOWN -client IGNORE #idea直接忽略掉了client模式再看/jre/bin目錄下面,竟然只有server文件夾,看來真的忽略了client模式
在centos7的服務(wù)器上面看了一下配置? jdk8也忽略掉了client模式
在主流商用JVM(HotSpot、J9)中,Java程序一開始是通過解釋器(Interpreter)進(jìn)行解釋執(zhí)行的。當(dāng)JVM發(fā)現(xiàn)某個(gè)方法或代碼塊運(yùn)行特別頻繁時(shí),就會(huì)把這些代碼認(rèn)定為“熱點(diǎn)代碼(Hot Spot Code)”,然后JVM會(huì)把這些代碼編譯成與本地平臺(tái)相關(guān)的機(jī)器碼,并進(jìn)行各種層次的優(yōu)化,完成這個(gè)任務(wù)的編譯器稱為:即時(shí)編譯器(Just In Time Compiler,JIT)
編譯器和解釋器的區(qū)別
java編譯器:將Java源文件(.java文件)編譯成字節(jié)碼文件(.class文件,是特殊的二進(jìn)制文件,二進(jìn)制字節(jié)碼文件),這種字節(jié)碼就是JVM的“機(jī)器語言”。javac.exe可以簡單看成是Java編譯器。
java解釋器(英語:Interpreter):是JVM的一部分。Java解釋器用來解釋執(zhí)行Java編譯器編譯后的程序。java.exe可以簡單看成是Java解釋器。
在結(jié)合一段程序理解
public class Test {
?? ?public static void main(String[] args) {
?? ??? ?System.out.println("hello world");
?? ?}
}
第一次運(yùn)行代碼:編譯->解釋->生成機(jī)器碼(即生成Test.class文件)
?第二次編譯:編譯->執(zhí)行(JIT即時(shí)編譯,不用再生成.class文件,提高運(yùn)行效率)
當(dāng)程序需要迅速啟動(dòng)和執(zhí)行的時(shí)候,解釋器可以首先發(fā)揮作用,省去編譯的時(shí)間,立即執(zhí)行。
編譯器可以逐漸發(fā)揮作用,把越來越多的代碼編譯成本地代碼,之后可以獲得更高的效率(占內(nèi)存)
解釋器與編譯器搭配使用的方式:
1、默認(rèn)(java -version混合模式)
2、解釋模式(java -Xint -version)僅使用解釋器方式執(zhí)行
3、編譯模式(java -Xcomp -version)優(yōu)先采用編譯方式執(zhí)行程序,但解釋器要在編譯無法進(jìn)行的情況下介入執(zhí)行過程?
轉(zhuǎn)載于:https://www.cnblogs.com/mutong1228/p/10311120.html
總結(jié)
以上是生活随笔為你收集整理的JVM解释器和编译器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: elasticsearch不能使用roo
- 下一篇: Echart---多项柱状图-2D/H5