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

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

注意注意

  • -横杠开头都是标志参数(所有JVM适用)
  • -X是非标参数(本版本JDK适用)
  • -XX是不稳定参数(不稳定,可能下个小版本号的JVM就不适用了)
  1. 设置堆大小
    一般我们将两个数设置为一样的,避免因对象数量和大小的变化导致堆扩大或缩小占用宝贵的CPU计算资源。
-Xms200M   # 设置堆最“小”的大小为200M
-Xmx200M   # 设置堆最“大”的大小为200M
  1. 指定使用那种垃圾处理器组合
-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+)
  1. 打印打击回收日志
-XX:+PrintGC             # 打印 GC 信息
-XX:+PrintGCDetails      # 打印更加详细的 GC 信息
-XX:+PrintGCCause        # 打印 GC 原因
-XX:+PrintGCTimeStamps   # GC执行的时间戳
  1. 生成 dump 堆转储文件
-XX:+HeapDumpOnOutOfMemoryError    # 在抛出 OOM 的时候自动生成堆转储文件
# 在 Java 程序运行的时候手动生成堆转储文件,但是因为特别消耗资源,所以在生产环境中不建议使用
jps                  # 使用 jps 查看运行中的 Java 程序以及程序的进程号(PID)
jmap -dump:format=b,file={文件生成路径+文件名} {jps 命令查找之后的进程ID}   # 生成堆转储文件的命令
  1. 其他参数
-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  # 设置热点代码检测阈值 
  1. Parallel 垃圾回收器常用参数
-XX:SurvivorRatio=6       # 新生代中各区比例,默认 8:1:1,改参数被设定为 6:1:1,因为 from 区和 to 区的大小必须为 2 的整数次幂,所以数值会有偏差
-XX:ParallelGCThreads=8  # 并行收集器的线程数,同样适用于 CMS,一般设为和 CPU 核数相同

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

相关文章
|
5月前
|
消息中间件 运维 监控
加一个JVM参数,让系统可用率从95%提高到99.995%
本文针对一个高并发(10W+ QPS)、低延迟(毫秒级返回)的系统因内存索引切换导致的不稳定问题,深入分析并优化了JVM参数配置。通过定位问题根源为GC压力大,尝试了多种优化手段:调整MaxTenuringThreshold、InitialTenuringThreshold、AlwaysTenure等参数让索引尽早晋升到老年代;探索PretenureSizeThreshold和G1HeapRegionSize实现索引直接分配到老年代;加速索引复制过程以及升级至JDK11使用ZGC。
570 82
加一个JVM参数,让系统可用率从95%提高到99.995%
|
2月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
237 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
5月前
|
Java
IDEA修改JDK版本
在IDEA中修改项目JDK版本的方法如下:1. 右键点击项目;2. 选择“Open Module Settings”,如图所示;3. 在弹出窗口中配置自定义的JDK路径。通过以上步骤,可轻松更改项目所使用的JDK版本,满足不同开发环境的需求。
1263 65
|
2月前
|
Ubuntu Java Android开发
在Ubuntu 18.04上安装与JDK 8兼容的Eclipse版本的步骤。
安装过程结束后,您就可以开始使用Eclipse来开发您的Java项目了,并且确保它与JDK 8兼容无误。这个过程涉及的是一个基本的安装流程,针对使用Java 8的用户,Eclipse的其他配置和插件安装根据个人开发环境和需求来定制。
220 0
|
4月前
|
存储 算法 Java
JvM JDK JRE 三者区别与联系详解
本文深入解析了Java编程中的三个核心概念:JVM(Java虚拟机)、JDK(Java开发工具包)和JRE(Java运行环境)。JVM是执行Java字节码的虚拟计算机,实现“一次编译,到处运行”;JDK包含JRE及开发工具,用于编写和调试Java程序;JRE负责运行已编译的Java程序。文章详细阐述了它们的功能、组成及应用场景,并通过实例说明其在实际开发中的作用,帮助开发者理解三者联系与区别,提升开发效率与问题解决能力。适合Java初学者及进阶开发者学习参考。
729 3
|
4月前
|
监控 Oracle Java
JVM JDK JRE 使用指南及组件封装方法详解
本指南全面介绍了JVM、JDK、JRE的使用方法与Java组件封装技巧。内容涵盖JDK安装配置、JRE使用、JVM参数调优(如堆内存设置和垃圾回收器选择),以及类、包的封装实践。通过示例展示工具类与数据访问组件的封装方法,并讲解JAR包创建与发布流程。此外,还提供了常见问题解决方案,如内存溢出处理和依赖冲突管理。帮助开发者掌握高效、规范的Java开发技能,提升代码复用性和可维护性。附带面试资料供进一步学习。
196 0
|
6月前
|
Java API 开发工具
Android cmdline-tools版本与最小JDK的关系
总的来说,Android的命令行工具和JDK之间的关系就像是一场舞会,两者需要彼此配合,才能共同创造出美妙的舞蹈。如果选择了不合适的舞伴(即不兼容的版本),可能会导致舞蹈中的步伐混乱,甚至无法完成舞蹈。而即使选择了合适的舞伴,也需要考虑舞伴的舞蹈技巧(即性能和稳定性),才能确保舞蹈的完美表现。因此,选择合适的Android命令行工具和JDK版本,是每一个Android开发者都需要面对的重要决定。
210 13
|
11月前
|
监控 Java 编译器
Java虚拟机调优指南####
本文深入探讨了Java虚拟机(JVM)调优的精髓,从内存管理、垃圾回收到性能监控等多个维度出发,为开发者提供了一系列实用的调优策略。通过优化配置与参数调整,旨在帮助读者提升Java应用的运行效率和稳定性,确保其在高并发、大数据量场景下依然能够保持高效运作。 ####
259 58
|
10月前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
11月前
|
Java
JVM内存参数
-Xmx[]:堆空间最大内存 -Xms[]:堆空间最小内存,一般设置成跟堆空间最大内存一样的 -Xmn[]:新生代的最大内存 -xx[use 垃圾回收器名称]:指定垃圾回收器 -xss:设置单个线程栈大小 一般设堆空间为最大可用物理地址的百分之80

热门文章

最新文章