JVM的Client模式与Server模式
JVM有两种运行模式Server与Client。
两种模式的区别在于,Client模式启动速度较快,Server模式启动较慢;
- 但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。
- 这是因为Server模式启动的JVM采用的是重量级的虚拟机,对程序采用了更多的优化;
- 而Client模式启动的JVM采用的是轻量级的虚拟机。
- 所以Server启动慢,但稳定后速度比Client远远要快。
当JVM用于启动GUI界面的交互应用时适合于使用client模式,当JVM用于运行服务器后台程序时建议用Server模式。
- JVM在client模式默认-Xms是1M,-Xmx是64M;
- 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模式的服务。