JVM有兩種運(yùn)行模式Server與Client。兩種模式的區(qū)別在于,Client模式啟動(dòng)速度較快,Server模式啟動(dòng)較慢;但是啟動(dòng)進(jìn)入穩(wěn)定期長(zhǎng)期運(yùn)行之后Server模式的程序運(yùn)行速度比Client要快很多。這是因?yàn)镾erver模式啟動(dòng)的JVM采用的是重量級(jí)的虛擬機(jī),對(duì)程序采用了更多的優(yōu)化;而Client模式啟動(dòng)的JVM采用的是輕量級(jí)的虛擬機(jī)。所以Server啟動(dòng)慢,但穩(wěn)定后速度比Client遠(yuǎn)遠(yuǎn)要快。
1. 當(dāng)前是Client or Server?
使用JAVA -version命令就能顯示出當(dāng)前虛擬機(jī)處于哪種模式。 Client: 如下圖所示,可以看到HotSpot虛擬機(jī)采用Client模式啟動(dòng)的。
Server: 如下圖所示,可以看到HotSpot虛擬機(jī)采用Server模式啟動(dòng)的。另外我們也能看到該虛擬機(jī)是64位的。如果像上面的Client圖中那樣不顯示位數(shù),則是32位虛擬機(jī)。所以使用java -version也能查看虛擬機(jī)是32位還是64位。
2. Client與Server切換
2.1 模式配置文件
JVM啟動(dòng)時(shí)采用何種模式是在名為jvm.cfg的配置文件中配置的。 在32位JDK中,jvm.cfg位置為:JAVA_HOME/jre/lib/i386/jvm.cfg;
jvm.cfg中配置:(此時(shí)為client模式)
在64位JDK中,jvm.cfg位置為:JAVA_HOME/jre/lib/amd64/jvm.cfg。
jvm.cfg中配置:(此時(shí)為server模式)
2.2 模式切換
如果要切換啟動(dòng)模式,首先要確認(rèn)JDK支持哪一種或兩種模式。查看JAVA_HOME/jre/bin目錄下是否存在client或server目錄。32位的JDK一般都支持server和client兩種模式。64位的虛擬機(jī)好像只支持server模式,沒(méi)有client目錄。如下為32位JDK模式支持目錄:
切換模式只需要將client和server的聲明語(yǔ)句互換位置即可。如下圖所示, 紅框中為32位虛擬機(jī)中默認(rèn)配置的client啟動(dòng)(已被注釋掉)。藍(lán)框中為修改之后的server模式啟動(dòng)。需要注意的是:在配置文件中最好不要出現(xiàn)空行,空行會(huì)報(bào)warning。
64位因?yàn)橹恢С謘erver模式,如果我們修改了配置,啟動(dòng)JVM時(shí)會(huì)報(bào)錯(cuò),無(wú)法啟動(dòng)。