JVM 调优常用参数(JDK1.8.0_281+CentOS7)参数1.8其他版本JDK也适用

本文详细介绍了如何设置JVM堆大小,选择合适的垃圾处理器组合,以及如何监控和控制垃圾回收。包括Xms和Xmx设置、GC算法选择如SerialGC、ParallelGC等,以及打印日志和堆转储文件的操作。
摘要由CSDN通过智能技术生成

注意注意

  • -横杠开头都是标志参数(所有JVM适用)
  • -X是非标参数(本版本JDK适用)
  • -XX是不稳定参数(不稳定,可能下个小版本号的JVM就不适用了)
  1. 设置堆大小
    一般我们将两个数设置为一样的,避免因对象数量和大小的变化导致堆扩大或缩小占用宝贵的CPU计算资源。

    -Xms200M   # 设置堆最“小”的大小为200M
    -Xmx200M   # 设置堆最“大”的大小为200M
    
  2. 指定使用那种垃圾处理器组合

    -XX:+UseSerialGC                     # 使用 Serial New + Serial Old 的组合垃圾回收器(淘汰)
    -XX:+UseParNewGC                     # 使用 ParNew + Serial Old 组合(基本不用)
    -XX:+UseConc(urrent)MarkSweepGC      # 使用 ParNew + CMS + Serial Old (响应时间优先 + 有缺陷)括号里代表有些版本要加,本版本不需要加
    -XX:+UseParallelGC                   # 使用 Parallel Scavenge + Parallel Old (吞吐量优先 + JDK默认)
    -XX:+UseParallelOldGC                # 同上
    -XX:+UseG1GC                         # 使用 G1 垃圾回收器,一个逻辑分代物理不分代的垃圾回收器,适用于大内存(20G+)
    
  3. 打印打击回收日志

    -XX:+PrintGC             # 打印 GC 信息
    -XX:+PrintGCDetails      # 打印更加详细的 GC 信息
    -XX:+PrintGCCause        # 打印 GC 原因
    -XX:+PrintGCTimeStamps   # GC执行的时间戳
    
  4. 生成 dump 堆转储文件

    -XX:+HeapDumpOnOutOfMemoryError    # 在抛出 OOM 的时候自动生成堆转储文件
    
    # 在 Java 程序运行的时候手动生成堆转储文件,但是因为特别消耗资源,所以在生产环境中不建议使用
    jps                  # 使用 jps 查看运行中的 Java 程序以及程序的进程号(PID)
    jmap -dump:format=b,file={文件生成路径+文件名} {jps 命令查找之后的进程ID}   # 生成堆转储文件的命令
    
  5. 其他参数

    -XX:+UseTLAB              # 使用 TLAB,默认打开,将 “+” 改为 “-” 则关闭
    -XX:+PrintTLAB            # 打印 TLAB 的使用情况
    -XX:TLABSize=2M           # 设置 TLAB 大小为2M
    -XX:+DisableExplicitGC    # 禁用 System.gc() 方法,该方法执行后不会产生 FGC
    -XX:+PrintHeapAtGC        # 打印 GC 堆栈情况
    -XX:+PrintGCApplicationConcurrentTime   # 打印应用程序响应时长
    -XX:+PrintGCApplicationStoppedTime      # 打印应用程序暂停时长
    -XX:+PrintReferenceGC     # 记录回收了多少种不同引用类型的引用
    -XX:+PrintVMOptions       # 打印 JVM 的参数
    -XX:+PrintFlagsFinal      # 打印最终的参数
    -XX:+PrintFlagsInitial    # 打印初始化默认的参数
    -Xloggc:/opt/log/gc.log   # gc 日志记录
    -XX:MaxTenuringThreshold=14 # 设置 GC 升代年龄为14,默认和最大都是15
    
    # 以下两个参数建议默认就好,不要设置
    -XX:PreBlockSpin=9          # 设置 synchronize 锁升级当中自旋锁的自旋次数(本版本已被废弃,之前版本可以使用,具体哪个版本可自行实验)
    -XX:CompileThreshold=10001  # 设置热点代码检测阈值 
    
  6. Parallel 垃圾回收器常用参数

    -XX:SurvivorRatio=6       # 新生代中各区比例,默认 8:1:1,改参数被设定为 6:1:1,因为 from 区和 to 区的大小必须为 2 的整数次幂,所以数值会有偏差
    -XX:ParallelGCThreads=8  # 并行收集器的线程数,同样适用于 CMS,一般设为和 CPU 核数相同
    

有很多省略,欢迎评论区补充

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值