jvm参数调优

一、了解JVM参数

JVM参数类型:

    • 标准参,所有JVM都应该支持
  • -X 非标,每个JVM实现不同
  • -XX 不稳定参数,下个版本可能取消

常见垃圾回收器组合参数设定:(1.8)

  • -XX:+UseSerialGC = Serial New (DefNew) + Serial Old

    • 小型程序。默认情况下不会是这种选项,HotSpot会根据计算及配置和JDK版本自动选择收集器
  • -XX:+UseParNewGC = ParNew + SerialOld

    • 这个组合已经很少用(在某些版本中已经废弃)
  • -XX:+UseConcMarkSweepGC = ParNew + CMS + Serial Old

  • -XX:+UseParallelGC = Parallel Scavenge + Parallel Old (1.8默认) 【PS + SerialOld】

  • -XX:+UseParallelOldGC = Parallel Scavenge + Parallel Old

  • -XX:+UseG1GC = G1

  • Linux中没找到默认GC的查看方法,而windows中会打印UseParallelGC

    • java +XX:+PrintCommandLineFlags -version
    • 通过GC的日志来分辨
  • Linux下1.8版本默认的垃圾回收器到底是什么?

    • 1.8.0_181 默认(看不出来)Copy MarkCompact
    • 1.8.0_222 默认 PS + PO

GC常用参数

  • -Xmn -Xms -Xmx -Xss
    年轻代 最小堆 最大堆 栈空间

  • -XX:+UseTLAB
    使用TLAB,默认打开,(一般不需要调整)

  • -XX:+PrintTLAB
    打印TLAB的使用情况,(一般不需要调整)

  • -XX:TLABSize
    设置TLAB大小,(一般不需要调整)

  • -XX:+DisableExplictGC,要默认打开,禁用手动频繁调用gc
    System.gc()不管用 ,FGC

  • -XX:+PrintGC
    打印出GC信息

  • -XX:+PrintGCDetails
    打印出GC详细信息

  • -XX:+PrintGCCauses
    打印GC和产生的原因

  • -XX:+PrintHeapAtGC

  • -XX:+PrintGCTimeStamps
    打印GC详细时间

  • -XX:+PrintGCApplicationConcurrentTime (低)
    打印应用程序时间

  • -XX:+PrintGCApplicationStoppedTime (低)
    打印暂停时长

  • -XX:+PrintReferenceGC (重要性低)
    记录回收了多少种不同引用类型的引用

  • -verbose:class
    类加载详细过程

  • -XX:+PrintVMOptions
    打印运行时参数

  • -XX:+PrintFlagsFinal -XX:+PrintFlagsInitial
    必须会用,打印参数
    在这里插入图片描述

  • -Xloggc:opt/log/gc.log
    设置gc文件

  • -XX:MaxTenuringThreshold
    升代年龄,最大值15,cms默认6,其他默认15

  • 锁自旋次数 -XX:PreBlockSpin 热点代码检测参数-XX:CompileThreshold 逃逸分析 标量替换 …
    这些不建议设置

Parallel常用参数

  • -XX:SurvivorRatio
  • -XX:PreTenureSizeThreshold
    大对象到底多大
  • -XX:MaxTenuringThreshold
    指定对象经过多少次垃圾回收进入老年代,cms默认6,其他默认15。补充:动态年龄指年轻代占用空间超Survivor的一半时会把年龄最大的放入老年代。
  • -XX:+ParallelGCThreads
    并行收集器的线程数,同样适用于CMS,一般设为和CPU核数相同
  • -XX:+UseAdaptiveSizePolicy
    自动选择各区大小比例

CMS常用参数

  • -XX:+UseConcMarkSweepGC
  • -XX:ParallelCMSThreads
    CMS线程数量
  • -XX:CMSInitiatingOccupancyFraction
    使用多少比例的老年代后开始CMS收集,默认是68%(近似值),如果频繁发生SerialOld卡顿,应该调小,(频繁CMS回收)
  • -XX:+UseCMSCompactAtFullCollection
    在FGC时进行压缩
  • -XX:CMSFullGCsBeforeCompaction
    多少次FGC之后进
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JVM参数是为了提高Java应用程序的性能和稳定性。下面是一些常见的JVM参数的思路和建议: 1. 堆内存设置: - -Xms: 初始堆大小,建议与-Xmx相同,避免堆大小的动态整。 - -Xmx: 最大堆大小,根据应用程序的需求进行设置,避免频繁的垃圾回收。 2. 垃圾回收器选择: - -XX:+UseParallelGC: 使用并行垃圾回收器,适合多核CPU和高吞吐量应用。 - -XX:+UseConcMarkSweepGC: 使用CMS垃圾回收器,适合响应时间先的应用。 - -XX:+UseG1GC: 使用G1垃圾回收器,适合大内存应用和低延迟要求。 3. 垃圾回收参数: - -XX:NewRatio: 设置新生代和老年代的比例,默认为2,可以根据应用程序的对象生命周期进行整。 - -XX:SurvivorRatio: 设置Eden区和Survivor区的比例,默认为8,可以根据对象的存活率进行整。 - -XX:MaxTenuringThreshold: 设置对象进入老年代的年龄阈值,默认为15,可以根据对象的存活率和内存情况进行整。 4. 线程相关参数: - -Xss: 设置线程栈的大小,默认为1M,可以根据应用程序的线程数量进行整。 - -XX:ParallelGCThreads: 并行垃圾回收的线程数量,默认为CPU核心数的1/8,可以根据CPU和内存情况进行整。 5. 其他常用参数: - -XX:+UseCompressedOops: 使用压缩指针,可以减少对象引用的内存消耗。 - -XX:+DisableExplicitGC: 禁用显示用System.gc()方法,避免不必要的垃圾回收。 以上是一些常见的JVM参数策略,具体的效果和最佳参数设置还需要根据应用程序的实际情况进行测试和整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值