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

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

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

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

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

一. 虛擬機(jī)

先說(shuō)下本篇文章的內(nèi)容都是基于HotSpot虛擬機(jī)。

我們熟知的Java虛擬機(jī)是一種規(guī)范標(biāo)準(zhǔn),有多種實(shí)現(xiàn),比如HotSpot虛擬機(jī)就是JVM的一種實(shí)現(xiàn),也是目前使用范圍最廣的Java虛擬機(jī)。其實(shí)HotSpot最早也不是Sun開(kāi)發(fā)的,是他早期收購(gòu)的一家公司開(kāi)發(fā)的,后來(lái)Sun把JDK開(kāi)源后,OpenJDK誕生了,所以HotSpot成了這兩個(gè)JDK共用的虛擬機(jī)。

除了HotSpot虛擬機(jī),Oracle原來(lái)的JRockit VM也是Java虛擬機(jī)的實(shí)現(xiàn)(后面會(huì)把HotSpot和JRockit整合),還有IBM也有對(duì)應(yīng)的VM實(shí)現(xiàn)。

為什么叫HotSpot虛擬機(jī)?

如同它的名字,它的特點(diǎn)就是熱點(diǎn)代碼探測(cè)技術(shù),這個(gè)技術(shù)可以通過(guò)執(zhí)行計(jì)數(shù)器找出最具有編譯價(jià)值的代碼,然后通過(guò)JIT即時(shí)編譯成機(jī)器碼并緩存起來(lái),提高執(zhí)行效率。

而JIT編譯只是一種概念,HotSpot內(nèi)置C1,C2這兩種編譯器實(shí)現(xiàn):

C1:編譯時(shí)間短,優(yōu)化策略簡(jiǎn)單C2:編譯時(shí)間長(zhǎng),優(yōu)化策略復(fù)雜

C1,C2都屬于JIT編譯技術(shù),是JIT的不同實(shí)現(xiàn)

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

HotSpot虛擬機(jī)分client端和server端,準(zhǔn)確的說(shuō)應(yīng)該是分兩種類型,因?yàn)閏lient,server VM是兩種適用不同業(yè)務(wù)場(chǎng)景的虛擬機(jī)類型。

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

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

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

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

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

網(wǎng)上有張c++和java的性能對(duì)比,如下:

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

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

  • client 默認(rèn)-Xms是1M,-Xmx是64M,新生代選擇的是串行g(shù)c,舊生代選擇的是串行g(shù)c
  • server 默認(rèn)-Xms是128M,-Xmx是1024M,新生代選擇的是并行回收gc,舊生代選擇的是并行g(shù)c

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

-server KNOWN-client IGNORE

當(dāng)該參數(shù)不指定時(shí),虛擬機(jī)啟動(dòng)檢測(cè)主機(jī)是否為服務(wù)器,如果是,則以ServerVM啟動(dòng),否則以ClientVM啟動(dòng),檢測(cè)的根據(jù)是至少2個(gè)CPU和最低2GB內(nèi)存。

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

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

三.虛擬機(jī)工作模式

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

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

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

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在java中 利用匿名內(nèi)部類進(jìn)行較簡(jiǎn)潔的雙括弧初始化的方法

    在java中 利用匿名內(nèi)部類進(jìn)行較簡(jiǎn)潔的雙括弧初始化的方法

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

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

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

    MyBatis?詳細(xì)講解動(dòng)態(tài)?SQL的使用

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

    這么設(shè)置IDEA中的Maven,再也不用擔(dān)心依賴下載失敗了

    今天給大家?guī)?lái)一個(gè)IDEA中Maven設(shè)置的小技巧.這個(gè)技巧可以說(shuō)非常有用,學(xué)會(huì)設(shè)置之后,再也不用擔(dān)心maven依賴下載變慢的問(wèn)題,需要的朋友可以參考下
    2021-05-05
  • java中File類的三種創(chuàng)建文件夾方法總結(jié)

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

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

    Java異常處理Guava?Throwables類使用實(shí)例解析

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

    Spring中的事務(wù)控制知識(shí)總結(jié)

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

    spring boot項(xiàng)目快速構(gòu)建的全步驟

    這篇文章主要給大家介紹了關(guān)于spring boot項(xiàng)目快速構(gòu)建的全步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Spring mvc防止數(shù)據(jù)重復(fù)提交的方法

    Spring mvc防止數(shù)據(jù)重復(fù)提交的方法

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

    使用Java設(shè)置字型和顏色的方法詳解

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

最新評(píng)論

竹山县| 乌鲁木齐市| 许昌县| 尼玛县| 县级市| 丹巴县| 南康市| 额济纳旗| 泸西县| 射阳县| 保靖县| 久治县| 雷山县| 绍兴县| 黄梅县| 三台县| 黄平县| 读书| 资源县| 临猗县| 吉林市| 京山县| 常宁市| 桃园县| 扎鲁特旗| 哈巴河县| 疏勒县| 伊川县| 东乌珠穆沁旗| 长寿区| 宁陵县| 长治市| 陇西县| 左贡县| 河南省| 德清县| 长治市| 夹江县| 清河县| 土默特左旗| 宁晋县|