国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

實戰Java虛擬機之二“虛擬機的工作模式”

2019-11-14 23:40:49
字體:
來源:轉載
供稿:網友
實戰java虛擬機之二“虛擬機的工作模式”

今天開始實戰Java虛擬機之二:“虛擬機的工作模式”。

總計有5個系列

  • 實戰Java虛擬機之一“堆溢出處理”
  • 實戰Java虛擬機之二“虛擬機的工作模式”
  • 實戰Java虛擬機之三“G1的新生代GC”
  • 實戰Java虛擬機之四“禁用System.gc()”
  • 實戰Java虛擬機之五“開啟JIT編譯”

目前的Java虛擬機支持Client和Server兩種運行模式。使用參數-client可以指定使用Client模式,使用參數-server可以指定使用Server模式。默認情況下,虛擬機會根據當前計算機系統環境自動選擇運行模式。使用-version參數可以查看當前的模式,如下所示:

  1. ./java-version
  2. javaversion"1.7.0_40"
  3. Java(TM)SERuntimeEnvironment(build1.7.0_40-b43)
  4. JavaHotSpot(TM)ClientVM(build24.0-b56,mixedmode,sharing)

使用-server參數后,就可以得到如下輸出:

  1. ./java-server-version
  2. javaversion"1.7.0_40"
  3. Java(TM)SERuntimeEnvironment(build1.7.0_40-b43)
  4. JavaHotSpot(TM)ServerVM(build24.0-b56,mixedmode)

與Client模式相比,Server模式的啟動比較慢,因為Server模式會嘗試收集更多的系統性能信息,使用更復雜的優化算法對程序進行優化。因此,當系統完全啟動并進入運行穩定期后,Server模式的執行速度會遠遠快于Client模式。所以,對于后臺長期運行的系統,使用-server參數啟動對系統的整體性能可以有不小的幫助。但對于用戶界面程序,運行時間不長,又追求啟動速度,Client模式也是不錯的選擇。

從發展趨勢上看,未來64位系統必然會逐步取代32位系統,而在64位系統中虛擬機更傾向于Server模式運行。

虛擬機在Server模式和Client模式下的各種參數可能會有很大不同,讀者如果需要查看給定參數的默認值,可以使用-XX:+PRintFlagsFinal參數。這里以JIT編譯閾值和最大堆為例,展示Client模式和Server模式下兩者的區別。

對于Client模式,參數如下:

  1. ./java-XX:+PrintFlagsFinal-client-version|grep-E'CompileThreshold|MaxHeapSize'
  2. intxCompileThreshold=1500{pdproduct}
  3. uintxMaxHeapSize:=268435456{product}
  4. javaversion"1.7.0_40"
  5. Java(TM)SERuntimeEnvironment(build1.7.0_40-b43)
  6. JavaHotSpot(TM)ClientVM(build24.0-b56,mixedmode,sharing)

對于Server模式,參數如下:

  1. ./java-XX:+PrintFlagsFinal-server-version|grep-E'CompileThreshold|MaxHeapSize'
  2. intxCompileThreshold=10000{pdproduct}
  3. uintxMaxHeapSize:=1073741824{product}
  4. javaversion"1.7.0_40"
  5. Java(TM)SERuntimeEnvironment(build1.7.0_40-b43)
  6. JavaHotSpot(TM)ServerVM(build24.0-b56,mixedmode)

可以看到,在Client模式下,CompileThreshold默認值為1500,即函數被調用1500次后,會進行JIT編譯(有關JIT編譯的更多細節請參閱《實戰Java虛擬機-jvm故障診斷與性能優化》第11章)。而在Server模式下,這個數值為10000。因此,Server模式下系統更有可能解釋執行。而一旦進行編譯,Server模式的優化效果會好于Client模式。其次,對于系統最大堆,在Client模式下為約256M,而在Server模式下約為1G。對于其他參數,讀者可以使用類似的方式進行查找比較。

  • 實戰Java虛擬機之一“堆溢出處理”
  • 實戰Java虛擬機之二“虛擬機的工作模式”
  • 實戰Java虛擬機之三“G1的新生代GC”
  • 實戰Java虛擬機之四“禁用System.gc()”
  • 實戰Java虛擬機之五“開啟JIT編譯”
節選自

《實戰Java虛擬機》一書Q交流群:397196583


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大庆市| 丰都县| 康保县| 仲巴县| 法库县| 曲阜市| 龙井市| 东乡族自治县| 宝山区| 平山县| 凯里市| 吐鲁番市| 建阳市| 镇赉县| 富平县| 嘉义县| 河间市| 岫岩| 高陵县| 内乡县| 北川| 佛冈县| 黎城县| 纳雍县| 布尔津县| 和平县| 内江市| 达孜县| 宜兰县| 房山区| 兰西县| 阳朔县| 茌平县| 大丰市| 桂东县| 新闻| 米易县| 陵水| 丰台区| 双鸭山市| 德安县|