hotspot 虚拟机的server和client模式
hotspot包括server和client两种模式的实现:Java HotSpot Client VM(-client),为在客户端环境中减少启动时间而优化;Java HotSpot Server VM(-server),为在服务器环境中最大化程序执行速度而设计。比较:Server VM启动比Client VM慢,运行比Client VM快。server模式的运行中,垃圾回收处理做的比较好一些。
今天看java虚拟机的知识,发现sun的java虚拟机hotspot原来还分server模式和client模式两种。
就顺着搜了一下hotspot的server和client两种模式的相关知识,整理了一下,记录下来。
hotspot包括server和client两种模式的实现:
Java HotSpot Client VM(-client),为在客户端环境中减少启动时间而优化;
Java HotSpot Server VM(-server),为在服务器环境中最大化程序执行速度而设计。
比较:Server VM启动比Client VM慢,运行比Client VM快。
server模式的运行中,垃圾回收处理做的比较好一些。
看了一下hotspot的安装的模式,32位的hotspot都是client模式;64位的都是server模式的。
那32位的虚拟机就一定是client模式,64位的虚拟机就一定是server模式吗?不是
这个是可以调整的,可以通过配置文件来永久性的调整,也可以通过启动java虚拟机时的启动参数来指定虚拟机的运行模式。
永久性修改的话,是在java 虚拟机的配置文件中修改的。
配置文件的位置:32位的虚拟机在%JAVA_HOME%/jre/lib/i386/jvm.cfg
64位的虚拟机在%JAVA_HOME%/jre/lib/amd64/jvm.cfg
打开32位的虚拟机对应的模式配置文件看看
# List of JVMs that can be used as an option to java, javac, etc.
# Order is important -- first in this list is the default JVM.
# NOTE that this both this file and its format are UNSUPPORTED and
# WILL GO AWAY in a future release.
#
# You may also select a JVM in an arbitrary location with the
# "-XXaltjvm=<jvm_dir>" option, but that too is unsupported
# and may not be available in a future release.
#
-client KNOWN
-server KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR
看看这里面对我们有用的信息吧
第一行的模式被作为虚拟机默认的运行模式,如果想指定虚拟机按照server模式运行,那将第一行和第二行换个位置。
可以使用 "-XXaltjvm=<jvm_dir>" 选项来指定虚拟机的运行模式,但是模式仅限本次启动使用,下次不可再用。
C:\Users\zWX192672>java -version
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)
C:\Users\zWX192672>java -XXaltjvm=Client -version
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)
C:\Users\zWX192672>java -version
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)
C:\Users\zWX192672>
64位的虚拟机配置文件中关于模式的两行为
-server KNOWN
-client IGNORE
client 模式后面对应参数为 IGNORE
再看看虚拟机的模式切换
D:\DEV_ENV\Java8_x64\jdk1.8.0_25\bin>java -version
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)
D:\DEV_ENV\Java8_x64\jdk1.8.0_25\bin>java "-XXaltjvm=<client>" -version
Error: missing `<client>' JVM at `D:\DEV_ENV\Java8_x64\jdk1.8.0_25\jre\bin\<client>\jvm.dll'.
Please install or use the JRE or JDK that contains these missing components.
D:\DEV_ENV\Java8_x64\jdk1.8.0_25\bin>
无法通过server模式切换到client模式,说明hotspot在64位的虚拟机上面取消了client模式的服务。
更多推荐
所有评论(0)