JVM server client参数使用
2017-07-27 10:08
441 查看
从JDK5开始,java在启动的时候 ,已经可以是判断当前系统是否是一个Server,从而决定是使用server 的jvm还是client的jvm。当然了,如果你强制指定了-server 或者-client就按照指定的运行,否则,系统会自动判断。
如果没有指定,那么默认的行为如下:
Legend: X =
default VM — = client VM not provided for this platform
从表里可以看到,在32位windows上默认就是client了,64位架构的,基本上都是server模式
在Java6当中,虚拟机根据当前系统是否有2个cpu,以及是否有大于2G的物理内存,来判断是不是一个server的机子。如果是,就用jvm server模式。
server模式默认会使用一个更大的堆,使用并行的GC,和更多的代码优化。client模式启动比较快,占用的内存比较小,用串行的GC。总体来说,server模式的性能应该会更好一些。
JVM有两种运行模式Server与Client。两种模式的区别在于,Client模式启动速度较快,Server模式启动较慢;但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。这是因为Server模式启动的JVM采用的是重量级的虚拟机,对程序采用了更多的优化;而Client模式启动的JVM采用的是轻量级的虚拟机。所以Server启动慢,但稳定后速度比Client远远要快。
使用java -version命令就能显示出当前虚拟机处于哪种模式。
Client:
如下图所示,可以看到HotSpot虚拟机采用Client模式启动的。
Server:
如下图所示,可以看到HotSpot虚拟机采用Server模式启动的。另外我们也能看到该虚拟机是64位的。如果像上面的Client图中那样不显示位数,则是32位虚拟机。所以使用java -version也能查看虚拟机是32位还是64位。
JVM启动时采用何种模式是在名为jvm.cfg的配置文件中配置的。
在32位JDK中,jvm.cfg位置为:JAVA_HOME/jre/lib/i386/jvm.cfg;
jvm.cfg中配置:(此时为client模式)
2
3
4
5
6
1
2
3
4
5
6
在64位JDK中,jvm.cfg位置为:JAVA_HOME/jre/lib/amd64/jvm.cfg。
jvm.cfg中配置:(此时为server模式)
2
3
4
5
6
1
2
3
4
5
6
如果要切换启动模式,首先要确认JDK支持哪一种或两种模式。查看JAVA_HOME/jre/bin目录下是否存在client或server目录。32位的JDK一般都支持server和client两种模式。64位的虚拟机好像只支持server模式,没有client目录。如下为32位JDK模式支持目录:
切换模式只需要将client和server的声明语句互换位置即可。如下图所示,
红框中为32位虚拟机中默认配置的client启动(已被注释掉)。蓝框中为修改之后的server模式启动。需要注意的是:在配置文件中最好不要出现空行,空行会报warning。
64位因为只支持server模式,如果我们修改了配置,启动JVM时会报错,无法启动。
如果没有指定,那么默认的行为如下:
Platform | Default VM | |||
Architecture | OS | client VM | if server-class, server VM; otherwise, client VM | server VM |
SPARC 32-bit | Solaris | X | ||
i586 | Solaris | X | ||
Linux | X | |||
Microsoft Windows | X | |||
SPARC 64-bit | Solaris | — | X | |
AMD64 | Solaris | — | X | |
Linux | — | X | ||
Microsoft Windows | — | X |
default VM — = client VM not provided for this platform
从表里可以看到,在32位windows上默认就是client了,64位架构的,基本上都是server模式
在Java6当中,虚拟机根据当前系统是否有2个cpu,以及是否有大于2G的物理内存,来判断是不是一个server的机子。如果是,就用jvm server模式。
server模式默认会使用一个更大的堆,使用并行的GC,和更多的代码优化。client模式启动比较快,占用的内存比较小,用串行的GC。总体来说,server模式的性能应该会更好一些。
概述
JVM有两种运行模式Server与Client。两种模式的区别在于,Client模式启动速度较快,Server模式启动较慢;但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。这是因为Server模式启动的JVM采用的是重量级的虚拟机,对程序采用了更多的优化;而Client模式启动的JVM采用的是轻量级的虚拟机。所以Server启动慢,但稳定后速度比Client远远要快。
1. 当前是Client or Server?
使用java -version命令就能显示出当前虚拟机处于哪种模式。 Client:
如下图所示,可以看到HotSpot虚拟机采用Client模式启动的。
Server:
如下图所示,可以看到HotSpot虚拟机采用Server模式启动的。另外我们也能看到该虚拟机是64位的。如果像上面的Client图中那样不显示位数,则是32位虚拟机。所以使用java -version也能查看虚拟机是32位还是64位。
2. Client与Server切换
2.1 模式配置文件
JVM启动时采用何种模式是在名为jvm.cfg的配置文件中配置的。 在32位JDK中,jvm.cfg位置为:JAVA_HOME/jre/lib/i386/jvm.cfg;
jvm.cfg中配置:(此时为client模式)
-client KNOWN -server KNOWN -hotspot ALIASED_TO -client -classic WARN -native ERROR -green ERROR1
2
3
4
5
6
1
2
3
4
5
6
在64位JDK中,jvm.cfg位置为:JAVA_HOME/jre/lib/amd64/jvm.cfg。
jvm.cfg中配置:(此时为server模式)
-server KNOWN -client IGNORE -hotspot ALIASED_TO -server -classic WARN -native ERROR -green ERROR1
2
3
4
5
6
1
2
3
4
5
6
2.2 模式切换
如果要切换启动模式,首先要确认JDK支持哪一种或两种模式。查看JAVA_HOME/jre/bin目录下是否存在client或server目录。32位的JDK一般都支持server和client两种模式。64位的虚拟机好像只支持server模式,没有client目录。如下为32位JDK模式支持目录: 切换模式只需要将client和server的声明语句互换位置即可。如下图所示,
红框中为32位虚拟机中默认配置的client启动(已被注释掉)。蓝框中为修改之后的server模式启动。需要注意的是:在配置文件中最好不要出现空行,空行会报warning。
64位因为只支持server模式,如果我们修改了配置,启动JVM时会报错,无法启动。
相关文章推荐
- spark 使用中Driver Executor 的默认jvm参数在yarn-client和yarn-cluster的区别
- spring-oauth-server实践:使用授权方式四:client_credentials 模式的客户端和服务端交互
- Windows下使用FileZilla[Server+Client]搭建FTP服务
- 使用过的jvm参数
- squid命中率分析参数注释 -squidclient使用
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEvent
- JVM启动参数类别和使用
- JVM client模式和Server模式的区别
- server adf中使用AJAX 传递参数出现乱码(转)
- 如何使用server版jvm ?
- jvm client server (转)
- 使用clientlistener和serverlistener刷新InlineFrame
- 一个完整的包含server,admin,client,其中server使用express搭建,admin和client基于vue开发。
- java虚拟机--jvm client模式与server模式的区别
- BIEE11g BI_server Jvm参数调整
- 查看所有JVM参数,默认值,以及一些常用JVM参数使用
- JVM client模式和Server模式的区别
- 使用JAVA NIO实现的UDP client和server
- Android中使用AIDL时的跨进程回调—Server回调Client
- JVM Server与Client运行模式