1 一般什么时候考虑JVM调优呢?
- Heap内存(老年代)持续上涨达到设置的最大内存值;
2 JVM调优的目标
3 JVM调优量化目标
- Old generation内存使用率<= 70%;
- Full gc 次数0 或 avg pause interval >= 24小时 ;
4 JVM调优的步骤
- 分析GC日志及dump文件,判断是否需要优化,确定瓶颈问题点;
- 找到最合适的参数,将这些参数应用到所有服务器,并进行后续跟踪。
5 常见的JVM参数
堆栈配置相关
-Xmx3550m -Xms3550m -Xmn2g -Xss128k
-XX:MaxPermSize=16m -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxTenuringThreshold=0
- -XX:MaxPermSize: 设置持久代大小为16m
- -XX:NewRatio=4: 设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。
- -XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6
- -XX:MaxTenuringThreshold=0:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。
垃圾收集器相关
-XX:+UseParallelGC
-XX:ParallelGCThreads=20
-XX:+UseConcMarkSweepGC
-XX:CMSFullGCsBeforeCompaction=5
-XX:+UseCMSCompactAtFullCollection:
-XX:+UseConcMarkSweepGC
- -XX:+UseParallelGC:选择垃圾收集器为并行收集器。
- -XX:ParallelGCThreads=20:配置并行收集器的线程数
- -XX:+UseConcMarkSweepGC:设置年老代为并发收集。
- -XX:CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。
- -XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片
- -XX:+UseConcMarkSweepGC 使用CMS垃圾收集器
辅助信息
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。