日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JVM解释器和编译器

發布時間:2024/4/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM解释器和编译器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先看一個命令

[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)

再看幾個名詞

Java(TM) SE Runtime Environment (build 1.8.0_191-b12) java運行環境

hotspot包括server和client兩種模式的實現:

Java HotSpot Client VM(-client),為在客戶端環境中減少啟動時間而優化;

Java HotSpot Server VM(-server),為在服務器環境中最大化程序執行速度而設計。

mixed mode 表示是混合模式 解釋器和編譯器都有

啟動時間上client模式較快,運行速度上server模式較快,最重要的是server垃圾回收處理的好。

以idea為例

在配置文件D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.1\jre64\lib\amd64下有一個

jvm.cfg文件

-server KNOWN -client IGNORE #idea直接忽略掉了client模式

再看/jre/bin目錄下面,竟然只有server文件夾,看來真的忽略了client模式

在centos7的服務器上面看了一下配置? jdk8也忽略掉了client模式

在主流商用JVM(HotSpot、J9)中,Java程序一開始是通過解釋器(Interpreter)進行解釋執行的。當JVM發現某個方法或代碼塊運行特別頻繁時,就會把這些代碼認定為“熱點代碼(Hot Spot Code)”,然后JVM會把這些代碼編譯成與本地平臺相關的機器碼,并進行各種層次的優化,完成這個任務的編譯器稱為:即時編譯器(Just In Time Compiler,JIT)

編譯器和解釋器的區別

java編譯器:將Java源文件(.java文件)編譯成字節碼文件(.class文件,是特殊的二進制文件,二進制字節碼文件),這種字節碼就是JVM的“機器語言”。javac.exe可以簡單看成是Java編譯器。

java解釋器(英語:Interpreter):是JVM的一部分。Java解釋器用來解釋執行Java編譯器編譯后的程序。java.exe可以簡單看成是Java解釋器。

在結合一段程序理解

public class Test {
?? ?public static void main(String[] args) {
?? ??? ?System.out.println("hello world");
?? ?}
}

第一次運行代碼:編譯->解釋->生成機器碼(即生成Test.class文件)

?第二次編譯:編譯->執行(JIT即時編譯,不用再生成.class文件,提高運行效率)

當程序需要迅速啟動和執行的時候,解釋器可以首先發揮作用,省去編譯的時間,立即執行。

編譯器可以逐漸發揮作用,把越來越多的代碼編譯成本地代碼,之后可以獲得更高的效率(占內存)

解釋器與編譯器搭配使用的方式:
1、默認(java -version混合模式)
2、解釋模式(java -Xint -version)僅使用解釋器方式執行
3、編譯模式(java -Xcomp -version)優先采用編譯方式執行程序,但解釋器要在編譯無法進行的情況下介入執行過程?

轉載于:https://www.cnblogs.com/mutong1228/p/10311120.html

總結

以上是生活随笔為你收集整理的JVM解释器和编译器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。