如上图, 现在这个应用平均3分钟左右就GC一次,感觉太频繁了。
现在堆内存分配的是4GB,我看平均值始终没有2GB。内存是不是设置太大了?
各位,有没有好的调优的资料分享一下,先行谢过。
附上现用的启动参数:
JAVA_OPTS="-server-Xms4096m-Xmx4096m-Xmn1536m-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/services/logs/xxxx/oom.hprof -XX:+UseParNewGC -XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+ExplicitGCInvokesConcurrent-XX:-UseBiasedLocking -XX:+AlwaysPreTouch -XX:+CMSParallelRemarkEnabled -XX:AutoBoxCacheMax=20000-Dwork.dir=${WO优艾设计网_设计百科RK_DIR}-Dcom.sun.management.jmxremote.port=8550-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false-Dlogger.file=${LOG_CONF} -Dfile.encoding=UTF-8 -Duser.timezone=UTC"
java version : 1.7.0_101
执于一世困于一念离弦的歌离弦的 19小时前
那要看你这个是什么程序了,一般地,2倍于平均占用是比较合理的做法。至于gc的频率,要看此程序申请内存的频率了。具体要优艾设计网_设计百科视这个程序自身的情况而定,不能一概而论。
18185350591拍不死你 19小时前
用jstat -gcutil <pid>优艾设计网_PS论坛 1s 观察YoungGC和FullGC的频率与耗时。适当调整-XX:NewRatio的比例
精彩评论