lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

  JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升.原因是:

  当虚拟机运行在-client模式的时候,使用的是一个代号为C1的轻量级编译器, 而-server模式启动的虚拟机采用相对重量级,代号为C2的编译器. C2比C1编译器编译的相对彻底,,服务起来之后,性能更高.

  java -version 可以直接查看出你使用的是client还是 server

client

    C:\Documents and Settings\Administrator>java -version  
    java version "1.6.0_21"  
    Java(TM) SE Runtime Environment (build 1.6.0_21-b06)  
    Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)  

server

    [root@kaifa02 ~]# java -version  
    java version "1.6.0_06"  
    Java(TM) SE Runtime Environment (build 1.6.0_06-b02)  
    Java HotSpot(TM) Server VM (build 10.0-b22, mixed mode)  

 

 

  两种模式的切换可以通过更改配置(jvm.cfg配置文件)来实现:

  32位的虚拟机在目录JAVA_HOME/jre/lib/i386/jvm.cfg,

  64位的在JAVA_HOME/jre/lib/amd64/jvm.cfg, 目前64位只支持server模式, 配置内容大致如下

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

 

 

  当JVM用于启动GUI界面的交互应用时适合于使用client模式,当JVM用于运行服务器后台程序时建议用Server模式。 
   
  JVM在client模式默认-Xms是1M,-Xmx是64M;JVM在Server模式默认-Xms是128M,-Xmx是1024M。我们可以通过运行:java -version来查看jvm默认工作在什么模式

示例

nohup java -Xloggc:jvm.log -server -Xms1000m -Xmn800m -Xmx1000m -XX:MaxPermSize=512m -classpath $CLASSPATH com.com... >>log.log &

 

-Xms 
  设置虚拟机可用内存堆的初始大小,缺省单位为字节,该大小为1024的整数倍并且要大于1MB,可用k(K)或m(M)为单位来设置较大的内存数。初始堆大小为2MB。

  例如:-Xms6400K,-Xms256M

-Xmx

  设置虚拟机内存堆的最大可用大小,缺省单位为字节。该值必须为1024整数倍,并且要大于2MB。可用k(K)或m(M)为单位来设置较大的内存数。缺省堆最大值为64MB。

  例如:-Xmx81920K,-Xmx80M

-Xloggc:

  将虚拟机每次垃圾回收的信息写到日志文件中,文件名由file指定,文件格式是平文件,内容和-verbose:gc输出内容相同。

-client,-server

  这两个参数用于设置虚拟机使用何种运行模式,client模式启动比较快,但运行时性能和内存管理效率不如server模式,通常用于客户端应用程序。相反,server模式启动比client慢,但可获得更高的运行性能。

  在 windows上,缺省的虚拟机类型为client模式,如果要使用server模式,就需要在启动虚拟机时加-server参数,以获得更高性能,对服 务器端应用,推荐采用server模式,尤其是多个CPU的系统。在Linux,Solaris上缺省采用server模式。

posted on 2019-08-02 18:01  白露~  阅读(805)  评论(0编辑  收藏  举报