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

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

相关文章
|
2天前
|
Java 开发工具
JVM参数太多?一网打尽常用JVM参数!
JVM参数太多?一网打尽常用JVM参数!
|
4天前
|
监控 负载均衡 算法
JVM工作原理与实战(三十二):GC调优
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了GC调优、GC调优的核心指标等内容。
10 0
|
4天前
|
Java 编译器 对象存储
java一分钟之Java入门:认识JDK与JVM
【5月更文挑战第7天】本文介绍了Java编程的基础——JDK和JVM。JDK是包含编译器、运行时环境、类库等的开发工具包,而JVM是Java平台的核心,负责执行字节码并实现跨平台运行。常见问题包括版本不匹配、环境变量配置错误、内存溢出和线程死锁。解决办法包括选择合适JDK版本、正确配置环境变量、调整JVM内存参数和避免线程死锁。通过代码示例展示了JVM内存管理和基本Java程序结构,帮助初学者更好地理解JDK和JVM在Java编程中的作用。
17 0
|
5天前
|
关系型数据库 MySQL Linux
Linux CentOs7 安装Mysql(5.7和8.0版本)密码修改 超详细教程
Linux CentOs7 安装Mysql(5.7和8.0版本)密码修改 超详细教程
|
11天前
|
Java
jvm配置参数,查看大对象直接分配到老年代
jvm配置参数,查看大对象直接分配到老年代
|
11天前
|
关系型数据库 MySQL 应用服务中间件
centos7在线安装jdk1.8+tomcat+mysql8+nginx+docker
现在,你已经成功在CentOS 7上安装了JDK 1.8、Tomcat、MySQL 8、Nginx和Docker。你可以根据需要配置和使用这些服务。请注意,安装和配置这些服务的详细设置取决于你的具体需求。
37 2
|
12天前
|
小程序 Java 程序员
【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系
【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系
28 0
|
12天前
|
Linux
如何检查CentOS版本:5种方法
这个文件包含了CentOS的详细版本信息,包括版本号、架构等。
28 0
|
13天前
|
人工智能 运维 Java
Serverless 应用引擎产品使用之在阿里云函数计算中设置JVM参数如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
20 0
|
16天前
|
监控 Java
【JVM】深入理解JVM调优
【JVM】深入理解JVM调优
8 0