1. 程式人生 > >關於JDK的Server和Client模式的切換

關於JDK的Server和Client模式的切換

 折騰JVM時遇到的點,這裡記錄一下,首先檢視下自己的JVM是以什麼模式啟動的,啟動DOS視窗,通過java -version命令檢視(沒有錯,就是我們初識Java的第一個命令(´ー∀ー`)),結果如下:

這裡寫圖片描述

從上述結果可以看到目前我機器上的jdk版本是64位的1.8.0_101,使用的是JVM是64位的HotSpot,再往後就是我們需要的資訊了,Server VM,說明目前這個虛擬機器是執行在Server模式下的,那這裡如何切換成Client模式呢?64位版本的JDK關於虛擬機器模式配置文字在%JAVA_HOME%\jre\lib\amd64\jvm.cfg中,裡面配置命令兩行:

-server KNOWN
-client IGNORE

廢話這麼多其實,64位是無法切換到Client模式的,預設只能工作在Server模式下,可以在JAVA_HOME\jre\bin目錄下面發現只有server目錄而沒有client目錄。

 但是32位版本的JDK再次檢視虛虛擬機器資訊時,可以看到HotSpot是預設是以Client模式執行的,如下:
這裡寫圖片描述
這時我們可以對32位的JDK執行模式進行更改的,它的虛擬機器配置檔案在%JAVA_HOME%\jre\lib\i386\jvm.cfg中,配置命令引數如下:

-client KNOWN
-server KNOWN
-hotspot ALIASED_TO
-client
-classic WARN -native ERROR -green ERROR

可以在JAVA_HOME\jre\bin目錄下面發現除了server目錄,client目錄也是存在的,切換到Server模式只需要將前兩行命令互換即可:

-server KNOWN
-client KNOWN
# 這裡是配置別名以作區分,最好改成server,也可以不改
-hotspot ALIASED_TO -server
-classic WARN
-native ERROR
-green ERROR

這樣就結束了,Server和Client切換完成,Server模式啟用重型虛擬機器,所以相對Client模式下啟動稍慢,但長期執行的穩定性要優於Client模式。
【注意】這裡配置過程中不能存在空行

,否則將報錯,但是配置檔案的最後一行需要留一行空白,否則也會報錯,這就有點奇葩了,下面是我的一些報錯資訊:

Warning: No leading - on line 32 of `D:\Program Files (x86)\Java\jdk1.7.0_72\jre\lib\i386\jvm.cfg'
Warning: Missing VM type on line 32 of `D:\Program Files (x86)\Java\jdk1.7.0_72\jre\lib\i386\jvm.cfg'
Warning: No leading - on line 37 of `D:\Program Files (x86)\Java\jdk1.7.0_72\jre\lib\i386\jvm.cfg'
Warning: Missing VM type on line 37 of `D:\Program Files (x86)\Java\jdk1.7.0_72\jre\lib\i386\jvm.cfg'
Warning: Unknown VM type on line 44 of `D:\Program Files (x86)\Java\jdk1.7.0_72\jre\lib\i386\jvm.cfg'

在上述過程中,遇到一個小插曲,切斷JDK版本時無法切換(新裝的32位JDK),在安裝完32位的JDK(中文官網下載),死活無法切換,就連其他版本的也無法切換了,原因在與環境變數優先順序的問題,在安裝完中文網上下載的JDK,它自動給我配置了一個PATH變數:C:\ProgramData\Oracle\Java\javapath,這是這貨惹的麻煩,只要將這個變數刪除即可,外文管網下載的JDK沒有這個毛病,解決!切換不同版本的JDK看這裡