JVM的Client模式与Server模式

JVM的Client模式与Server模式

JVM有两种运行模式Server与Client。

两种模式的区别在于,Client模式启动速度较快,Server模式启动较慢;

  • 但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。
  • 这是因为Server模式启动的JVM采用的是重量级的虚拟机,对程序采用了更多的优化;
  • 而Client模式启动的JVM采用的是轻量级的虚拟机。
  • 所以Server启动慢,但稳定后速度比Client远远要快。

当JVM用于启动GUI界面的交互应用时适合于使用client模式,当JVM用于运行服务器后台程序时建议用Server模式。

  1. JVM在client模式默认-Xms是1M,-Xmx是64M;
  2. JVM在Server模式默认-Xms是128M,-Xmx是1024M。

我们可以通过运行:java -version来查看jvm默认工作在什么模式。

java version "1.6.0_27"  
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)  
Java HotSpot(TM) Client VM (build 20.2-b06, mixed mode, sharing)  

java version "1.8.0_25"  
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)  
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)  

JVM启动时采用何种模式是在名为jvm.cfg的配置文件中配置的。 

32位的虚拟机在%JAVA_HOME%/jre/lib/i386/jvm.cfg
64位的虚拟机在%JAVA_HOME%/jre/lib/amd64/jvm.cfg

打开32位的虚拟机对应的模式配置文件看看

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

第一行的模式被作为虚拟机默认的运行模式,如果想指定虚拟机按照server模式运行,那将第一行和第二行换个位置。

 

64位的虚拟机配置文件中关于模式的两行为

-server KNOWN  
-client IGNORE  

client 模式后面对应参数为 IGNORE,表示不支持。

无法通过server模式切换到client模式,说明hotspot在64位的虚拟机上面取消了client模式的服务。

 

posted @ 2018-03-08 17:00  假程序猿  阅读(1787)  评论(0编辑  收藏  举报