JVM有两种运行模式Server与Client。两种模式的区别在于:

  • Client模式启动速度较快
  • Server模式启动较慢

但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。这是因为:

  • Server模式启动的JVM采用的是重量级的虚拟机,对程序采用了更多的优化;
  • Client模式启动的JVM采用的是轻量级的虚拟机。所以Server启动慢,但稳定后速度比Client远远要快。

1. 当前是Client or Server?

使用Java -version命令就能显示出当前虚拟机处于哪种模式。

Client

Server


另外我们也能看到该虚拟机是64位的。如果像上面的Client图中那样不显示位数,则是32位虚拟机。所以使用java -version也能查看虚拟机是32位还是64位。

2. Client与Server切换

2.1 模式切换

如果要切换启动模式,首先要确认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时会报错,无法启动。
    模式 新生代GC方式 老年代和持久代GC方式
    client Serial 串行GC Serial Old 串行GC
    server Parallel Scavenge 并行回收GC Parallel Old 并行GC