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)java64位
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模式的服务。