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运行期间,所有用户线程将停止