代码改变世界

JVM 专题

2011-04-01 10:20  hanwesley  阅读(309)  评论(0编辑  收藏  举报

http://developer.51cto.com/art/201001/176550.htm

Java启动

/usr/java/jdk1.6.0_13/bin/java

-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

-Dprogram.name=run.sh

-server -Xms4g -Xmx4g -XX:PermSize=96m -XX:MaxPermSize=256m -Xmn2560m -verbose:gc

-Xloggc:/home/yahoo/output/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps

-XX:+UseConcMarkSweepGC

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

-Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs=/home/yahoo/jboss.simbauic/lib/endorsed

-classpath /home/yahoo/jboss.simbauic/bin/run.jar:/usr/java/jdk1.6.0_13/lib/tools.jar org.jboss.Main -b 0.0.0.0

参数

说明

-server   服务机模式,不配置默认的是-client

-Xms2g -Xmx2g  堆大小,线上的堆的最大值与最小值必须一致,省得jvm调整堆大小浪费性能。

-Xmn1024m    堆中新生代大小,一般为堆的一半多些

-XX:PermSize=96m -XX:MaxPermSize=256m   jvm方法区空间大小

-Xloggc:/home/yahoo/output/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps    打GC日志,这不会给系统带来啥负担,建议线上机器都加上,方便调优和OutOfMemory后查错。

-verbose:gc     将虚拟机的垃圾回收事件信息打印

-XX:+UseConcMarkSweepGC    新生代采用ParNew GC方式,旧生代采用并发GC方式,以减少系统停顿时间为优先

-XX:+DisableExplicitGC   禁止程序触发GC

JVM调优一些原则

最好选用最新,支持64位 jvm

-xms -xmx最好一样大,减少堆再分配的消耗

调高-XX:NewRatio(NewSize/MaxNewSize)的值,会减少younggc的次数,但会增加oldgc的时间。

缓存会放在持久带,最好对缓存做长度限制,最好选用LRU算法的Map

promotion faild (xmx-xmn)*100-CMSininitating/100<=xmn

GC运行期间,所有用户线程将停止