最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JVM Client和Server端有什么區(qū)別

 更新時間:2020年11月16日 09:06:39   作者:Java老K  
這篇文章主要介紹了JVM Client和Server端有什么區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

java -version 命令大家都用過,大部分就是看下jdk版本或檢查下環(huán)境變量的設置,但最后一行的信息也挺重要,如下圖所示:

Server VM表示我們的虛擬機類型,mixed mode表示虛擬機以混合模式工作。

一. 虛擬機

先說下本篇文章的內容都是基于HotSpot虛擬機。

我們熟知的Java虛擬機是一種規(guī)范標準,有多種實現,比如HotSpot虛擬機就是JVM的一種實現,也是目前使用范圍最廣的Java虛擬機。其實HotSpot最早也不是Sun開發(fā)的,是他早期收購的一家公司開發(fā)的,后來Sun把JDK開源后,OpenJDK誕生了,所以HotSpot成了這兩個JDK共用的虛擬機。

除了HotSpot虛擬機,Oracle原來的JRockit VM也是Java虛擬機的實現(后面會把HotSpot和JRockit整合),還有IBM也有對應的VM實現。

為什么叫HotSpot虛擬機?

如同它的名字,它的特點就是熱點代碼探測技術,這個技術可以通過執(zhí)行計數器找出最具有編譯價值的代碼,然后通過JIT即時編譯成機器碼并緩存起來,提高執(zhí)行效率。

而JIT編譯只是一種概念,HotSpot內置C1,C2這兩種編譯器實現:

C1:編譯時間短,優(yōu)化策略簡單C2:編譯時間長,優(yōu)化策略復雜

C1,C2都屬于JIT編譯技術,是JIT的不同實現

二. 虛擬機類型client server的區(qū)別

HotSpot虛擬機分client端和server端,準確的說應該是分兩種類型,因為client,server VM是兩種適用不同業(yè)務場景的虛擬機類型。

  • client VM 使用的是C1編譯器
  • server VM 使用的是C2編譯器

在第一張圖中圈出的Server VM使用的就是C2編譯器。

所以clientserver最大的區(qū)別就是C1和C2的區(qū)別,主要體現在編譯策略上:

  • Client啟動快,內存占用少,編譯快,針對桌面應用程序優(yōu)化(比如GUI),為在客戶端環(huán)境中減少啟動時間而優(yōu)化
  • Server啟動慢,但是一旦運行起來后,性能將會有很大的提升,因為編譯更完全,效率高,針對服務端應用優(yōu)化

大家可以根據具體的業(yè)務場景選擇,不過現在的系統(tǒng)大部分都是B/S架構,前后端又是分離的,所以我們用的虛擬機大部分都是server類型。

網上有張c++和java的性能對比,如下:

可以看到最明顯的差異是JVM client端和server端關于method call方法調用上的性能對比(紅色是server VM,黃色是client VM,越高越好)。

另外client/server VM除了在編譯策略和性能上的區(qū)別外,在內存分配和GC上也不一樣:

  • client 默認-Xms是1M,-Xmx是64M,新生代選擇的是串行gc,舊生代選擇的是串行gc
  • server 默認-Xms是128M,-Xmx是1024M,新生代選擇的是并行回收gc,舊生代選擇的是并行gc

如果需要修改HotSpot虛擬機的類型可以通過%JAVA_HOME%jrelibamd64文件夾里的jvm.cfg修改(jdk版本不一樣對應的目錄可能不叫amd64這個名字),jvm.cfg文件內容如下:

-server KNOWN-client IGNORE

當該參數不指定時,虛擬機啟動檢測主機是否為服務器,如果是,則以ServerVM啟動,否則以ClientVM啟動,檢測的根據是至少2個CPU和最低2GB內存。

還有一種切換方式是每次執(zhí)行java命令時在后面加上-client或-server的參數指定。

這里需要注意一點:無論是哪種方式切換,都是調用對應的jvm.dll執(zhí)行的,所以在你本地必須有client和server各自對應的jvm.dll文件存在才行,否則無法切換虛擬機類型。

三.虛擬機工作模式

第一張圖里的最后一個圈出的mixed mode表示虛擬機的工作模式為混合模式,在命令行輸入java -X可以查看其它模式:

還有一種-Xcomp表示純編譯模式。

下面講下三種模式的區(qū)別

  • -Xmixed 混合模式:mixed mode是HotSpot虛擬機的默認工作模式,在上篇文章中講到過虛擬機執(zhí)行字節(jié)碼分兩種方式:解釋執(zhí)行和編譯執(zhí)行,編譯執(zhí)行就是JIT(C1/C2),所以混合模式就是解釋執(zhí)行+編譯執(zhí)行(根據clientVM還是serverVM類型區(qū)分使用C1還是C2編譯器),這樣就可以發(fā)揮解釋執(zhí)行和編譯執(zhí)行的優(yōu)勢。
  • -Xint 解釋模式:interpreted mode,強制JVM以解釋方式執(zhí)行所有的字節(jié)碼
  • -Xcomp 編譯模式:compiled mode,與-Xint相反,JVM在第一次使用時會把所有的字節(jié)碼編譯成本地代碼(實際我測試下來的效果并不如混合模式)

解釋模式和編譯模式的區(qū)別上篇文章也有講到,這里就不展開了

同樣工作模式也可以切換,在命令行加上-Xint或-Xcomp的參數設置:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 在java中 利用匿名內部類進行較簡潔的雙括弧初始化的方法

    在java中 利用匿名內部類進行較簡潔的雙括弧初始化的方法

    本篇文章小編將為大家介紹,關于在java中 利用匿名內部類進行較簡潔的雙括弧初始化的方法,有需要的朋友可以參考一下
    2013-04-04
  • SpringBoot多環(huán)境開發(fā)與日志小結

    SpringBoot多環(huán)境開發(fā)與日志小結

    這篇文章主要介紹了SpringBoot多環(huán)境開發(fā)與日志,下面給大家說一下如何基于多環(huán)境開發(fā)做配置獨立管理,務必掌握,需要的朋友可以參考下
    2022-08-08
  • MyBatis?詳細講解動態(tài)?SQL的使用

    MyBatis?詳細講解動態(tài)?SQL的使用

    動態(tài)?SQL?是?MyBatis?的強大特性之一。如果你使用過?JDBC?或其它類似的框架,你應該能理解根據不同條件拼接?SQL?語句有多痛苦,例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態(tài)?SQL,可以徹底擺脫這種痛苦
    2022-04-04
  • 這么設置IDEA中的Maven,再也不用擔心依賴下載失敗了

    這么設置IDEA中的Maven,再也不用擔心依賴下載失敗了

    今天給大家?guī)硪粋€IDEA中Maven設置的小技巧.這個技巧可以說非常有用,學會設置之后,再也不用擔心maven依賴下載變慢的問題,需要的朋友可以參考下
    2021-05-05
  • java中File類的三種創(chuàng)建文件夾方法總結

    java中File類的三種創(chuàng)建文件夾方法總結

    這篇文章主要給大家介紹了關于java中File類的三種創(chuàng)建文件夾方法,File類代表文件或目錄路徑名的抽象表達形式,通過File類提供的方法,我們可以很方便地創(chuàng)建文件夾,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • Java異常處理Guava?Throwables類使用實例解析

    Java異常處理Guava?Throwables類使用實例解析

    這篇文章主要為大家介紹了Java異常處理神器Guava?Throwables類使用深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Spring中的事務控制知識總結

    Spring中的事務控制知識總結

    我們講了轉賬方法存在著事務問題,當在業(yè)務層方法更新轉入賬戶時發(fā)現異常,更新收款方賬戶則會出錯.當時是通過自定義事務管理器進行整體事務的處理.其實Spring 提供了業(yè)務層的事務處理解決方案,并且 Spring 的事務控制都是基于 AOP 的,需要的朋友可以參考下
    2021-06-06
  • spring boot項目快速構建的全步驟

    spring boot項目快速構建的全步驟

    這篇文章主要給大家介紹了關于spring boot項目快速構建的全步驟,文中通過示例代碼介紹的非常詳細,對大家學習或者使用spring boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • Spring mvc防止數據重復提交的方法

    Spring mvc防止數據重復提交的方法

    這篇文章主要為大家詳細介紹了Spring mvc防止數據重復提交的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 使用Java設置字型和顏色的方法詳解

    使用Java設置字型和顏色的方法詳解

    這篇文章主要介紹了使用Java設置字型和顏色的方法,在Java的繪圖等圖形化編程中較常用到,需要的朋友可以參考下
    2015-10-10

最新評論

扶绥县| 南靖县| 寿阳县| 栾城县| 横山县| 綦江县| 沿河| 万年县| 仁怀市| 青浦区| 文水县| 高阳县| 明星| 湟源县| 黎平县| 南阳市| 固始县| 浦城县| 保德县| 大竹县| 宁晋县| 建始县| 河北省| 讷河市| 珲春市| 唐山市| 公安县| 彰化市| 萝北县| 宁津县| 博客| 曲沃县| 玉环县| 安陆市| 雷山县| 柏乡县| 陵川县| 桦川县| 嘉善县| 满洲里市| 孟州市|