三,配置JVM参数示例

二、线上JVM参数设置推荐

阅读完一、JVM参数设置说明
和“2. JVM优化措施”的基础上,选择合理的垃圾回收器和配置合理的参数并不是固定不变的。根据服务的性质和虚拟机配置的不同需要灵活修改jvm参数。

一般而言,大多数的Java应用是不需要进行jvm优化的,如果需要请做调整并压测得到一个合理的值。

除此以外一般我们的生产环境容器只需要修改以下几个值即可。

  1. 选择合适的垃圾回收器:
    -XX:+UseG1GC 使用G1垃圾回收器
    -XX:+UseConcMarkSweepGC 使用cms垃圾回收器
    Java8环境及以上,高并发应用优先推荐G1回收器,CMS次之;对于定时任务等非交互型应用,优先推荐使用Java8默认的垃圾回收器即可(+UseParallelGC: Parallel Scavenge(新生代)+ Serial Old(老年代))
  2. 堆大小配置和元空间配置:
    示例:一台4C、8G的虚拟机可以参考使用堆大小Xms为6G,留出一部分内存给虚拟机自身使用,一般设置为虚拟机总内存的2/3,可在此值的基础上上线调整一部分。
    元空间MetaspaceSize设置256M,现在很多类库,包括 Spring,都会大量生成一些动态类,默认的20MB 很容易就超了,我们可以试着调大这个数值。按照经验,一般调整成 256MB 就足够了,如果动态类较少可以适当调整该值。
    -Xmn:表示年轻代的大小,默认新生代占堆大小的 1/3。高并发、对象快消亡场景可适当加大这个区域,对半,或者更多,都是可以的。但是在 G1 下,就不用再设置这个值了,它会自动调整 -Xms6G -Xmx6G -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Xmn2048m
  3. **-Xss128k 栈空间设置:**设置较小的线程栈以支持创建更多的线程,支持海量访问,并提升系统性能,对于运算简单的应用服务,可以设置较小的栈空间,对于运算复杂的应用可以稍微调高该值。
  4. **-XX:MaxGCPauseMillis=n 停顿时间设置:(G1回收器)**设置最大GC停顿时间(GC pause time)指标(target). 这是一个软性指标(soft goal), JVM 会尽量去达成这个目标。
  5. -XX:G1HeapRegionSize:小堆区设置(G1回收器)
    用于设置小堆区大小,这个值为 2 的次幂,不要太大,也不要太小,如果实在不知道如何设置,建议保持默认。
  6. -XX:InitiatingHeapOccupancyPercent:(G1回收器)
    表示当整个堆内存使用达到一定比例(默认是 45%),并发标记阶段 就会被启动
  7. -XX:SurvivorRatio=6年轻代设置:
    设置年轻代中Eden区与Survivor区的比值。系统默认是8,根据经验设置为6,则2个Survivor区与1个Eden区的比值为2:6,一个Survivor区占整个年轻代的1/8。
  8. -XX:ParallelGCThreads=8收集器线程数设置:
    配置并行收集器的线程数,即同时8个线程一起进行垃圾回收。此值一般配置为与CPU数目相等。(通常情况下不修改此值)
  9. -XX:MaxTenuringThreshold=0
    设置垃圾最大年龄(在年轻代的存活次数)。如果设置为0的话,则年轻代对象不经过Survivor区直接进入年老代。对于年老代比较多的应用,可以提高效率;如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率。根据被海量访问的动态Web应用之特点,其内存要么被缓存起来以减少直接访问DB,要么被快速回收以支持高并发海量请求,因此其内存对象在年轻代存活多次意义不大,可以直接进入年老代,根据实际应用效果,在这里设置此值为0。CMS下该值默认为6,G1下默认为15。对象的年龄分布可以使用 -XX:+PrintTenuringDistribution 打印,如果后面几代的大小总是差不多,证明过了某个年龄后的对象总能晋升到老生代,就可以把晋升阈值设小。(通常情况下不修改此值)

三、GC日志打印

-XX:+PrintGC 打印GC简况

-XX:+PrintGCDetails 打印GC详情

-XX:+PrintGCTimeStamps 打印GC时间戳

-Xloggc:filename GC日志目录

四、线上环境jvm参数示例:

jvm参数配置:

-server -Xmx20G -Xms20G -XX:NewRatio=3 -XX:SurvivorRatio=4 -Xss256k -XX:MaxTenuringThreshold=15 -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+UseFastAccessorMethods -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=1 -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:logs/gc-%t.log -XX:+HeapDumpOnOutOfMemoryError

G1垃圾回收器jvm参数示例:

-server -Xmx20G -Xms20G -Xss256k -XX:NewRatio=3 -XX:G1HeapRegionSize=8m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:MaxTenuringThreshold=15 -XX:+UseG1GC -XX:InitiatingHeapOccupancyPercent=45 -XX:MaxGCPauseMillis=200 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=8 -XX:GCLogFileSize=128M -XX:+HeapDumpOnOutOfMemoryError -Xloggc:logs/gc-%t.log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值