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 核数相同

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

相关文章
|
1月前
|
Linux 编译器 测试技术
【C++】CentOS环境搭建-快速升级G++版本
通过上述任一方法,您都可以在CentOS环境中高效地升级G++至所需的最新版本,进而利用C++的新特性,提升开发效率和代码质量。
159 64
|
1月前
|
Linux 编译器 测试技术
【C++】CentOS环境搭建-快速升级G++版本
通过上述任一方法,您都可以在CentOS环境中高效地升级G++至所需的最新版本,进而利用C++的新特性,提升开发效率和代码质量。
191 63
|
6天前
|
Arthas 监控 Java
JVM进阶调优系列(9)大厂面试官:内存溢出几种?能否现场演示一下?| 面试就那点事
本文介绍了JVM内存溢出(OOM)的四种类型:堆内存、栈内存、元数据区和直接内存溢出。每种类型通过示例代码演示了如何触发OOM,并分析了其原因。文章还提供了如何使用JVM命令工具(如jmap、jhat、GCeasy、Arthas等)分析和定位内存溢出问题的方法。最后,强调了合理设置JVM参数和及时回收内存的重要性。
|
4天前
|
监控 Java 编译器
Java虚拟机调优实战指南####
本文深入探讨了Java虚拟机(JVM)的调优策略,旨在帮助开发者和系统管理员通过具体、实用的技巧提升Java应用的性能与稳定性。不同于传统摘要的概括性描述,本文摘要将直接列出五大核心调优要点,为读者提供快速预览: 1. **初始堆内存设置**:合理配置-Xms和-Xmx参数,避免频繁的内存分配与回收。 2. **垃圾收集器选择**:根据应用特性选择合适的GC策略,如G1 GC、ZGC等。 3. **线程优化**:调整线程栈大小及并发线程数,平衡资源利用率与响应速度。 4. **JIT编译器优化**:利用-XX:CompileThreshold等参数优化即时编译性能。 5. **监控与诊断工
|
15天前
|
存储 监控 Java
JVM进阶调优系列(8)如何手把手,逐行教她看懂GC日志?| IT男的专属浪漫
本文介绍了如何通过JVM参数打印GC日志,并通过示例代码展示了频繁YGC和FGC的场景。文章首先讲解了常见的GC日志参数,如`-XX:+PrintGCDetails`、`-XX:+PrintGCDateStamps`等,然后通过具体的JVM参数和代码示例,模拟了不同内存分配情况下的GC行为。最后,详细解析了GC日志的内容,帮助读者理解GC的执行过程和GC处理机制。
|
23天前
|
Arthas 监控 数据可视化
JVM进阶调优系列(7)JVM调优监控必备命令、工具集合|实用干货
本文介绍了JVM调优监控命令及其应用,包括JDK自带工具如jps、jinfo、jstat、jstack、jmap、jhat等,以及第三方工具如Arthas、GCeasy、MAT、GCViewer等。通过这些工具,可以有效监控和优化JVM性能,解决内存泄漏、线程死锁等问题,提高系统稳定性。文章还提供了详细的命令示例和应用场景,帮助读者更好地理解和使用这些工具。
|
28天前
|
监控 架构师 Java
JVM进阶调优系列(6)一文详解JVM参数与大厂实战调优模板推荐
本文详述了JVM参数的分类及使用方法,包括标准参数、非标准参数和不稳定参数的定义及其应用场景。特别介绍了JVM调优中的关键参数,如堆内存、垃圾回收器和GC日志等配置,并提供了大厂生产环境中常用的调优模板,帮助开发者优化Java应用程序的性能。
|
1月前
|
Java 关系型数据库 MySQL
【编程基础知识】Eclipse连接MySQL 8.0时的JDK版本和驱动问题全解析
本文详细解析了在使用Eclipse连接MySQL 8.0时常见的JDK版本不兼容、驱动类错误和时区设置问题,并提供了清晰的解决方案。通过正确配置JDK版本、选择合适的驱动类和设置时区,确保Java应用能够顺利连接MySQL 8.0。
130 1
|
1月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
97 1
|
1月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
43 3