JVM server client参数使用

从JDK5开始,java在启动的时候 ,已经可以是判断当前系统是否是一个Server,从而决定是使用server 的jvm还是client的jvm。当然了,如果你强制指定了-server 或者-client就按照指定的运行,否则,系统会自动判断。

如果没有指定,那么默认的行为如下:

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

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远远要快。

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 ERROR
 
 
  • 1
  • 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 ERROR
 
 
  • 1
  • 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时会报错,无法启动。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值