full gc 比 minor gc 多的原因
元空间不够导致的多余full gc
显示调用System.gc()造成多余的full gc
老年代空间分配担保机制
优化思路
尽量让每次Young GC后的存活对象小于Survivor区域的50%,都留存在年轻代里。尽量别让对象进入老年代。尽量减少Full GC的频率,避免频繁Full GC对JVM性能的影响
GC日志打印输出
-Xloggc:./gc-%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCCause <br>-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M
%t代表时间
通过分析GC日志,可以获取gc情况,如果full GC过多可进行调整
gceasy
对GC日志文件进行可视化展示的工具,工具还提供基于机器学习的JVM智能优化(需要付费)建议
官网地址