溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中server模式與client模式有什么區(qū)別

發(fā)布時間:2021-01-26 16:14:57 來源:億速云 閱讀:690 作者:Leah 欄目:編程語言

這篇文章給大家介紹Java中server模式與client模式有什么區(qū)別,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

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

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

Java中server模式與client模式有什么區(qū)別

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

Java中server模式與client模式有什么區(qū)別

Java中server模式與client模式有什么區(qū)別

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

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

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

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

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

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

其它延伸知識點

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

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

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

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

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

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

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

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

關(guān)于Java中server模式與client模式有什么區(qū)別就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI