java - 关于GC频次和堆内存大小设定
本文介绍了java - 关于GC频次和堆内存大小设定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
如上图, 现在这个应用平均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=${WORK_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
解决方案
看你的图应该是YGC,YGC这个频率没关系不算很频繁。
要看资料的话可以看这个:
这篇关于java - 关于GC频次和堆内存大小设定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文