天呀!JVM居然還有2兩種運行模式


概述

JVM有兩種運行模式Server與Client。兩種模式的區別在於,Client模式啟動速度較快,Server模式啟動較慢;但是啟動進入穩定期長期運行之後Server模式的程序運行速度比Client要快很多。這是因為Server模式啟動的JVM採用的是重量級的虛擬機,對程序採用了更多的優化;而Client模式啟動的JVM採用的是輕量級的虛擬機。所以Server啟動慢,但穩定後速度比Client遠遠要快。

1. 當前是Client or Server?

使用Java -version命令就能顯示出當前虛擬機處於哪種模式。 Client: 如下圖所示,可以看到HotSpot虛擬機採用Client模式啟動的。

天呀!JVM居然還有2兩種運行模式

Server: 如下圖所示,可以看到HotSpot虛擬機採用Server模式啟動的。另外我們也能看到該虛擬機是64位的。如果像上面的Client圖中那樣不顯示位數,則是32位虛擬機。所以使用java -version也能查看虛擬機是32位還是64位。

天呀!JVM居然還有2兩種運行模式

2. Client與Server切換

2.1 模式配置文件

JVM啟動時採用何種模式是在名為jvm.cfg的配置文件中配置的。 在32位JDK中,jvm.cfg位置為:JAVA_HOME/jre/lib/i386/jvm.cfg;

天呀!JVM居然還有2兩種運行模式

jvm.cfg中配置:(此時為client模式)

天呀!JVM居然還有2兩種運行模式

<code>

在64位JDK中,jvm.cfg位置為:JAVA_HOME/jre/lib/amd64/jvm.cfg。

天呀!JVM居然還有2兩種運行模式

jvm.cfg中配置:(此時為server模式)

<code>

2.2 模式切換

如果要切換啟動模式,首先要確認JDK支持哪一種或兩種模式。查看JAVA_HOME/jre/bin目錄下是否存在client或server目錄。32位的JDK一般都支持server和client兩種模式。64位的虛擬機好像只支持server模式,沒有client目錄。如下為32位JDK模式支持目錄:

天呀!JVM居然還有2兩種運行模式

切換模式只需要將client和server的聲明語句互換位置即可。如下圖所示, 紅框中為32位虛擬機中默認配置的client啟動(已被註釋掉)。藍框中為修改之後的server模式啟動。需要注意的是:在配置文件中最好不要出現空行,空行會報warning。

天呀!JVM居然還有2兩種運行模式

64位因為只支持server模式,如果我們修改了配置,啟動JVM時會報錯,無法啟動。


分享到:


相關文章: