JAVA服务器常用JVM性能参数说明

-server

HotSpot VM 有两个模式 Server Mode 与 Client Mode

简单地说,Client Mode 启动快,Server Mode 整体性能好。它们使用了不同的 JIT 编译器,Server VM 使用的那一个对代码做了更加多的优化。一般来说,像 Tomcat 这样的 Servlet container 需要长时间运行,启动速度相对来说不是那么的敏感,适合运行在 Server VM 里。tomcat以server模式运行时将拥有:更大、更高的并发处理能力,更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量,而 GUI 程序对启动速度要求比较高,所以使用 Client VM 较好。

如何指定使用哪个 VM 呢?启动的时候指定 -client 或者 -server 参数即可。如果不写参数默认是哪个?官方说法是自动探测 "server class". 该网页介绍,如果当前机器有两个或以上 CPU,并且有2GB以上内存,那么就认为这个机器是 server-class machine, 默认就会运行 Server VM. 

可以在VisualVM里查看java.vm.name属性

java.vm.name=Java HotSpot(TM) 64-Bit Server VM

-Dcom.sun.management.jmxremote=true

启动JMX远程监控

-Dcom.sun.management.jmxremote.port=9004

JMX远程监控端口

-Dcom.sun.management.jmxremote.ssl=false

不需要SSL

-Dcom.sun.management.jmxremote.authenticate=false

不需要认证

 

-XX:+UseParNewGC

对年轻代采用多线程并行回收

-Dsun.rmi.dgc.client.gcInterval=3600000

RMI客户端GC发生周期的设定

-Dsun.rmi.dgc.server.gcInterval=3600000

RMI服务端GC发生周期的设定

-XX:+UseTLAB

是否在线程的栈空间内分配对象,如果你的内存较大的话,并且配置了比较大的线程栈空间,则使用这个参数会使得临时&本地对象的申请和释放比较快。

-XX:+UseConcMarkSweepGC

使用CMS GC,可以在GC次数增多的情况下,每次GC的响应时间却很短,比如说使用了CMS GC后经过jprofiler的观察,GC被触发次数非常多, 而每次GC耗时仅为几毫秒。

-XX:+CMSClassUnloadingEnabled

在使用UseConcMarkSweepGC策略的前提下,对PermGen进行GC

-XX:SoftRefLRUPolicyMSPerMB=0

每兆堆空闲空间中SoftReference的存活时间。

-XX:+CMSParallelRemarkEnabled

在使用UseParNewGC 的情况下, 尽量减少 mark 的时间

 

-XX:+UseCMSCompactAtFullCollection

打开对年老代的压缩。可能会影响性能,但是可以消除碎片(老年代才会有full gc)

-XX:+UseFastAccessorMethods

优化原始类型的getter方法性能。

-XX:+UseCMSInitiatingOccupancyOnly

指示年老代的使用率在达到初始化设置的比例后,启动CMS策略 GC收集

 

-XX:CMSInitiatingOccupancyFraction=70

年老代初始化的使用率为70%,达到此数值后,启动CMS策略 GC收集

基本上满足(Xmx-Xmn)*(100-CMSInitiatingOccupancyFraction)/100>=Xmn就不会出现promotion failed

-XX:LargePageSizeInBytes=128M

设置heap内存的内存页大小。大内存分页至于JVM性能的提升是有好处的。

32位机器一般情况,不建议将页size调得太大,4-64M,是可以接受的(默认是4M)。

64位的大内存机器,可以尝试调大。

-XX:CMSFullGCsBeforeCompaction=0

由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。指定进行多少次fullGC之后,进行tenured的内存空间压缩,对 0 的理解认为是每次都会。

 

其他参考URL

Java HotSpot VM Options

Java 6 JVM参数选项大全(中文版)

JAVA虚拟机性能参数调优指导书

猜你喜欢

转载自billmingchen.iteye.com/blog/1936930
今日推荐