jvm 调优

1.jstat -gcutil pid 1000 (查看gc和fullgc的回收频率等信息)

2 top -H -p pid (查看一个进程中所有线程的情况)

3.jstack pid > xxx.log (查看某个线程栈的日志,可以分析其中那些代码有问题)

  jmap -heap pid 查看当前堆中对象,可以>>到文件中看前几个,他是按照对象的数量进行排序了的

4.通过jmc 仅支持1.7.0_40及以上版本 

 1.XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=myrecording.jfr   
  加到jvm参数里 
  2.-XX:+UnlockCommercialFeatures -XX:+FlightRecorder。通过执行jcmd pid JFR.start duration=60s filename=myrecording.jfr来灵活的运行分析

5.jvm 参数常用配置(cms gc方式的[并发gc])

-Xms6g -Xmx6g -XX:PermSize=96m -XX:MaxPermSize=384m -Xmn2g -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSMaxAbortablePrecleanTime=5000 -XX:+CMSClassUnloadingEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=65 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/java.hprof -verbose:gc -Xloggc:/data/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=10000 -Dsun.net.client.defaultReadTimeout=30000 -XX:+DisableExplicitGC -Djava.net.preferIPv4Stack=true


-Xmn是总堆的1/4 初始堆和最大堆最好设置一样大,减少堆内存的分配


问题:CMS GC时出现promotion failed和concurrent mode failure

年轻代相对于年老带设置的稍大,年老带的触发fullgc的百分比阀值设置的大就会造成上面的问题

堆空间分布:Survivor0,Survivor1,eden ,old,perm 

1.如果有很多对象产生的应用并且周期长,有可能进入old区的,那么 年轻代和年老带的比例最好分成1:3,同时old的fullgc百分比配置65%最好,计算公式如下:加入年轻代1G,年老带3G,执行fullgc区域的百分比配置65% ,通过计算Survivor0:Survivor1:eden = 1:1:4 那么eden区占用667M 

                  old达到65%正常剩余空间为3*0.35 = 1.05G,就算进行yonggc把所有的年轻代空间的数据都放到old区的剩余空间也是能放得下的

案例:eden满,两个交换区满,old区达到65%,在以上情况下肯定要出发fullgc,要是old区剩余的空间不足,那么fullgc就会触发很长时间,应用会出现长时间的停顿,如果基于以上的配置,可以基本避免,至少不会再出现长时间fullgc

---------------------------------------------------------------------------------------------------------------------------

在gc.log中查看promotion failed和concurrent mode failure关键字来判断调优的基本面,在进行更细致的优化来改变gc的频繁程度等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值