• JVM client模式和Server模式的区别


    你知道自己执行的是哪个jre吗?”一文中我们知道安装JDK时会安装了两套JRE:专用和公用,殊不知这两套JRE还有秘密。

    专用和公用JRE的不同

    不同点在于专用JRE的bin里不仅有“client”目录,还有“server”目录,而公用的只有"client"目录。其实client和server是Java运行的两种模式,那么它们有什么区别呢?

    JVM client模式和Server模式启动,分别针对桌面应用和服务器应用做了相应的优化,client版本加载速度较快,server版本加载速度较慢但运行起来较快。。

    Java HotSpot虚拟机默认不带参数启动会首先检测主机是否为服务器,如果是,则以Server模式启动,否则以client模式启动,而检测的根据是至少2个CPU和最低2GB内存。

    查看你的虚拟机版本与模式 

    java -version //查看JVM默认的环境 
    java -client -version //查看JVM的客户端环境,针对GUI优化,启动速度快,运行速度不如server 
    java -server -version //查看JVM的服务器端环境,针对生产环境优化,运行速度快,启动速度慢 

    如图:

    可以看得出使用的是HotSpot虚拟机,使用的是Client模式。


    虚拟机模式切换

    如果只是临时切换,可以直接使用命令行执行,格式如:

    java -模式(client或server) classname

    如果永久切换可以修改配置文件,配置文件在“JAVA_HOME/jre/lib/i386/jvm.cfg”,我们可以看到JVM默认的顺序:

    -client KNOWN
    -server KNOWN
    -hotspot ALIASED_TO -client
    -classic WARN
    -native ERROR
    -green ERROR

    只需要把-server和-clent调换顺序即可:

    -server KNOWN
    -client KNOWN
    -hotspot ALIASED_TO -client
    -classic WARN
    -native ERROR
    -green ERROR


    性能对比

    曾经有人把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。

    出处:http://www.zhaiqianfeng.com    
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    nsstring字符串重组
    nssstring 转换大小写
    NSString的截取
    SEL数据类型
    protocol(协议)的一些要点
    block数据类型
    category应用(计算nssting的数量)
    category分类
    mvc购物车项目(2)
    ArrayList中存储数组时需要注意到的问题
  • 原文地址:https://www.cnblogs.com/zhaiqianfeng/p/4620334.html
Copyright © 2020-2023  润新知