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

Java虛擬機(jī)JVM之server模式與client模式的區(qū)別

 更新時(shí)間:2017年12月01日 16:06:07   投稿:wdc  
這篇文章主要介紹了Java虛擬機(jī)JVM的client模式和Server模式兩者的區(qū)別和聯(lián)系

JVM client模式和Server模式區(qū)別

JVM Server模式與client模式啟動(dòng),最主要的差別在于:-Server模式啟動(dòng)時(shí),速度較慢,但是一旦運(yùn)行起來(lái)后,性能將會(huì)有很大的提升。

JVM工作在Server模式下可以大大提高性能,Server模式下應(yīng)用的啟動(dòng)速度會(huì)比client模式慢大概10%,但運(yùn)行速度比Client VM要快至少有10倍

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

由于服務(wù)器的CPU、內(nèi)存和硬盤(pán)都比客戶端機(jī)器強(qiáng)大,所以程序部署后,都應(yīng)該以server模式啟動(dòng),獲取較好的性能;
JVM在client模式默認(rèn)-Xms是1M,-Xmx是64M;JVM在Server模式默認(rèn)-Xms是128M,-Xmx是1024M;
server:啟動(dòng)慢,編譯更完全,編譯器是自適應(yīng)編譯器,效率高,針對(duì)服務(wù)端應(yīng)用優(yōu)化,在服務(wù)器環(huán)境中最大化程序執(zhí)行速度而設(shè)計(jì)。
client:快速啟動(dòng),內(nèi)存占用少,編譯快,針對(duì)桌面應(yīng)用程序優(yōu)化,為在客戶端環(huán)境中減少啟動(dòng)時(shí)間而優(yōu)化;

當(dāng)JVM用于啟動(dòng)GUI界面的交互應(yīng)用時(shí)適合于使用client模式,當(dāng)JVM用于運(yùn)行服務(wù)器后臺(tái)程序時(shí)建議用Server模式。

我們可以通過(guò)運(yùn)行:java -version來(lái)查看jvm默認(rèn)工作在什么模式。

 

關(guān)于圖一中的GCC

clien模式下,新生代選擇的是串行g(shù)c,舊生代選擇的是串行g(shù)c
server模式下,新生代選擇的是并行回收gc,舊生代選擇的是并行g(shù)c
一般來(lái)說(shuō)我們系統(tǒng)應(yīng)用選擇有兩種方式:吞吐量?jī)?yōu)先和暫停時(shí)間優(yōu)先,對(duì)于吞吐量?jī)?yōu)先的采用server默認(rèn)的并行g(shù)c方式,對(duì)于暫停時(shí)間優(yōu)先的選用并發(fā)gc(CMS)方式。

其它延伸知識(shí)點(diǎn)

JDK有兩種VM,VM客戶端,VM服務(wù)器應(yīng)用程序。這兩種解決方案分享java運(yùn)行環(huán)境的熱點(diǎn)代碼庫(kù),但使用不同的編譯器,適用于客戶機(jī)和服務(wù)器的獨(dú)特的性能特點(diǎn),這些差異包括編寫(xiě)內(nèi)聯(lián)政策和堆的默認(rèn)值。

雖然服務(wù)器和客戶端虛擬機(jī)類(lèi)似,服務(wù)器VM已專(zhuān)門(mén)調(diào)整最大峰值操作速度。它的目的是執(zhí)行長(zhǎng)時(shí)間運(yùn)行的服務(wù)器應(yīng)用程序,它需要最快的運(yùn)行速度超過(guò)一個(gè)快速啟動(dòng)時(shí)間或較小的運(yùn)行時(shí)內(nèi)存占用。

客戶VM編譯器是經(jīng)典的虛擬機(jī)和實(shí)時(shí)升級(jí)(JIT)通過(guò)JDK的先前版本使用的編譯器??蛻舳颂摂M機(jī)提供了改進(jìn)的運(yùn)行應(yīng)用程序和小程序的性能。java虛擬機(jī)的熱點(diǎn)客戶已減少應(yīng)用程序的啟動(dòng)時(shí)間和內(nèi)存占用特別調(diào)整,使其特別適合客戶環(huán)境。在一般情況下,客戶端系統(tǒng)更好的圖形用戶界面。

因此,真正的區(qū)別也在編譯器級(jí)別上:

客戶端虛擬機(jī)編譯器不嘗試執(zhí)行由編譯器在服務(wù)器虛擬機(jī)上執(zhí)行的更復(fù)雜的優(yōu)化,但在交換過(guò)程中,它需要較少的時(shí)間來(lái)分析和編譯一段代碼。這意味著客戶端虛擬機(jī)可以更快地啟動(dòng),并需要一個(gè)較小的內(nèi)存占用。

服務(wù)器虛擬機(jī)包含一個(gè)先進(jìn)的自適應(yīng)編譯器支持許多C++編譯器的優(yōu)化進(jìn)行優(yōu)化,同樣的類(lèi)型,以及一些優(yōu)化,不能用傳統(tǒng)的編譯器完成的,比如積極的內(nèi)聯(lián)在虛擬方法調(diào)用。這是一個(gè)競(jìng)爭(zhēng)和性能優(yōu)勢(shì),靜態(tài)編譯器。自適應(yīng)優(yōu)化技術(shù)在它的方法是非常靈活的,通常優(yōu)于甚至先進(jìn)的靜態(tài)分析和編譯技術(shù)。

-Server模式啟動(dòng)時(shí),速度較慢,但是一旦運(yùn)行起來(lái)后,性能將會(huì)有很大的提升,原因是:當(dāng)虛擬機(jī)在-Client模式的時(shí)候,使用的是一個(gè)代號(hào)為C1的輕量級(jí)編譯器,而-Server模式啟動(dòng)的虛擬機(jī)采用相對(duì)重量級(jí)代號(hào)為C2的編譯器,C2比C1編譯器編譯的相對(duì)徹底,服務(wù)起來(lái)之后,性能高。

一般只要變更-server KNOWN與-client KNOWN兩個(gè)配置的先后順序即可,前提是JAVA_HOME/jre/bin目錄下同時(shí)存在server和client兩個(gè)文件夾,分別對(duì)應(yīng)各自的jvm

說(shuō)了這么多其實(shí)總結(jié)成一句話就是:

JVM Server模式下應(yīng)用啟動(dòng)慢但運(yùn)行速度快,JVM Client模式下應(yīng)用啟動(dòng)快但運(yùn)行速度要慢些

推薦:服務(wù)器上請(qǐng)以Server模式運(yùn)行,面客戶端或GUI模式下就以Client模式運(yùn)行

相關(guān)文章

  • 基于SpringBoot和Vue3的博客平臺(tái)的用戶注冊(cè)與登錄功能實(shí)現(xiàn)

    基于SpringBoot和Vue3的博客平臺(tái)的用戶注冊(cè)與登錄功能實(shí)現(xiàn)

    本教程將指導(dǎo)您如何使用Spring?Boot和Vue3實(shí)現(xiàn)用戶注冊(cè)與登錄功能。我們將使用Spring?Boot作為后端框架,Vue3作為前端框架,同時(shí)使用MySQL作為數(shù)據(jù)庫(kù),感興趣的朋友可以參考一下
    2023-04-04
  • SpringBoot整合PostgreSQL的示例代碼

    SpringBoot整合PostgreSQL的示例代碼

    本文主要介紹了SpringBoot整合PostgreSQL的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • SpringBoot實(shí)現(xiàn)單文件與多文件上傳功能

    SpringBoot實(shí)現(xiàn)單文件與多文件上傳功能

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)單文件與多文件上傳功能,Spring?MVC對(duì)文件上傳做了簡(jiǎn)化,而在Spring?Boot中對(duì)此做了更進(jìn)一步的簡(jiǎn)化,文件上傳變得更為方便,下面開(kāi)始演示,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2022-01-01
  • Spring配置文件解析之BeanDefinitionReader詳解

    Spring配置文件解析之BeanDefinitionReader詳解

    這篇文章主要介紹了Spring配置文件解析之BeanDefinitionReader詳解,ApplicationContext.xml配置文件解析成Document對(duì)象,真正對(duì)xml中元素解析的類(lèi)是在BeanDefinitionDocumentReader的實(shí)現(xiàn)類(lèi)中來(lái)完成的,需要的朋友可以參考下
    2024-02-02
  • vue+springboot+shiro+jwt實(shí)現(xiàn)登錄功能

    vue+springboot+shiro+jwt實(shí)現(xiàn)登錄功能

    這篇文章主要介紹了vue+springboot+shiro+jwt實(shí)現(xiàn)登錄功能,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 詳解Java如何優(yōu)雅的實(shí)現(xiàn)異常捕獲

    詳解Java如何優(yōu)雅的實(shí)現(xiàn)異常捕獲

    在一個(gè)優(yōu)秀的項(xiàng)目中一定少不了對(duì)程序流程良好的異常捕獲與日志打印,所以本文主要為大家介紹了如何優(yōu)雅的實(shí)現(xiàn)異常捕獲與日志打印輸出,有需要的可以參考下
    2023-09-09
  • 十種JAVA排序算法實(shí)例

    十種JAVA排序算法實(shí)例

    本文件講了十種JAVA排序方法(冒泡(Bubble)排序——相鄰交換 、選擇排序——每次最小/大排在相應(yīng)的位置 、插入排序——將下一個(gè)插入已排好的序列中 、殼(Shell)排序——縮小增量 、歸并排序 、快速排序 、堆排序 、拓?fù)渑判?、錦標(biāo)賽排序 、基數(shù)排序)的使用,并提供了實(shí)例代碼可參考
    2013-11-11
  • 詳解Java利用ExecutorService實(shí)現(xiàn)同步執(zhí)行大量線程

    詳解Java利用ExecutorService實(shí)現(xiàn)同步執(zhí)行大量線程

    這篇文章主要介紹了Java利用ExecutorService實(shí)現(xiàn)同步執(zhí)行大量線程,ExecutorService可以維護(hù)我們的大量線程在操作臨界資源時(shí)的穩(wěn)定性。
    2017-03-03
  • Java徹底消滅if-else的8種方案

    Java徹底消滅if-else的8種方案

    這篇文章主要給大家介紹了關(guān)于Java徹底消滅if-else的8種方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • JavaMail郵件發(fā)送機(jī)制詳解

    JavaMail郵件發(fā)送機(jī)制詳解

    這篇文章主要介紹了JavaMail郵件發(fā)送機(jī)制詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論

凌海市| 白沙| 马边| 纳雍县| 新巴尔虎右旗| 南皮县| 文昌市| 武清区| 方山县| 广水市| 烟台市| 镇江市| 滕州市| 许昌市| 深圳市| 英德市| 封丘县| 朝阳县| 侯马市| 大名县| 出国| 萝北县| 天津市| 嵩明县| 云阳县| 宁乡县| 平阴县| 海兴县| 马关县| 长治市| 汕头市| 台南市| 新密市| 呈贡县| 西乌珠穆沁旗| 正镶白旗| 建湖县| 凤庆县| 扎兰屯市| 汉川市| 新乡市|