zoukankan      html  css  js  c++  java
  • JVM两种运行模式Server与Client

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

    性能对比

    曾经有人把java与c++性能做了个对比,如图:


    图中最显著的就是JVM client模式和Server模式关于method call的对比,那个差别不是一般的大,在后来的测试中发现,相差至少有10倍。

    下面是另外两个对比图:



    JVM工作在Server模式可以大大提高性能,但应用的启动会比client模式慢大概10%。当JVM用于启动GUI界面的交互应用时适合于使用client模式,当JVM用于运行服务器后台程序时建议用Server模式。

    JVM在client模式默认-Xms是1M,-Xmx是64M;JVM在Server模式默认-Xms是128M,-Xmx是1024M。




  • 相关阅读:
    [CF1037D] Valid BFS?
    [AMPPZ2014] Petrol
    [CF241E] Flights
    [洛谷P4436] HNOI/AHOI2018 游戏
    [洛谷P1613] 跑路
    [AMPPZ2014] The Captain
    [洛谷 P1373] 小a和uim之大逃离
    jq 图片切换效果 类似3D
    jq 块的拖拽效果
    sort排序问题
  • 原文地址:https://www.cnblogs.com/signheart/p/14441385.html
Copyright © 2011-2022 走看看