2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
這里向大家描述一下JVM client模式和Server模式兩者的區(qū)別和聯(lián)系,JVM如果不顯式指定是-Server模式還是-client模式,JVM能夠根據(jù)下列原則進(jìn)行自動(dòng)判斷(適用于Java5版本或者Java以上版本)。
JVM client模式和Server模式
JVM Server模式與client模式啟動(dòng),最主要的差別在于:-Server模式啟動(dòng)時(shí),速度較慢,但是一旦運(yùn)行起來后,性能將會(huì)有很大的提升。JVM如果不顯式指定是-Server模式還是-client模式,JVM能夠根據(jù)下列原則進(jìn)行自動(dòng)判斷(適用于Java5版本或者Java以上版本)。
前段時(shí)間有個(gè)同事給我發(fā)了個(gè)java跟c++性能比較的文章,其中有個(gè)對(duì)比圖引起了我的興趣,意外的是,我感興趣的不是java和c++的對(duì)比,而是java -Server模式和java -client模式的對(duì)比。從來沒想到兩者間的性能有如此巨大的差別。而在后來自己的親身測(cè)試中發(fā)現(xiàn)確實(shí)如此。
下面是我看到的那個(gè)對(duì)比圖:
圖中最顯著的就是JVM client模式和Server模式關(guān)于method call的對(duì)比,那個(gè)差別不是一般的大,在后來的測(cè)試中發(fā)現(xiàn),相差至少有10倍。
下面是另外兩個(gè)對(duì)比圖:
JVM工作在Server模式可以大大提高性能,但應(yīng)用的啟動(dòng)會(huì)比client模式慢大概10%。當(dāng)該參數(shù)不指定時(shí),虛擬機(jī)啟動(dòng)檢測(cè)主機(jī)是否為服務(wù)器,如果是,則以Server模式啟動(dòng),否則以client模式啟動(dòng),J2SE5.0檢測(cè)的根據(jù)是至少2個(gè)CPU和最低2GB內(nèi)存。
當(dāng)JVM用于啟動(dòng)GUI界面的交互應(yīng)用時(shí)適合于使用client模式,當(dāng)JVM用于運(yùn)行服務(wù)器后臺(tái)程序時(shí)建議用Server模式。
JVM在client模式默認(rèn)-Xms是1M,-Xmx是64M;JVM在Server模式默認(rèn)-Xms是128M,-Xmx是1024M。我們可以通過運(yùn)行:java -version來查看jvm默認(rèn)工作在什么模式。
添加回答
舉報(bào)