JVM参数调整

devtools/2025/3/12 2:27:27/

一、内存相关参数

1. 堆内存控制
  • -Xmx:最大堆内存(如 -Xmx4g,默认物理内存1/4)。
  • -Xms:初始堆内存(建议与-Xmx相等,避免动态扩容带来的性能波动)。
  • -Xmn:新生代大小(如 -Xmn2g,需权衡老年代空间)。
  • -XX:NewRatio:老年代与新生代的比例(如 -XX:NewRatio=2 表示老年代是新生代的2倍)。
  • -XX:SurvivorRatio:Eden区与Survivor区的比例(如 -XX:SurvivorRatio=8 表示Eden:S0:S1=8:1:1)。
2. 元空间(方法区)
  • -XX:MetaspaceSize:初始元空间大小(默认约21M)。
  • -XX:MaxMetaspaceSize:最大元空间大小(防止无限膨胀,如 -XX:MaxMetaspaceSize=256m)。
3. 直接内存(堆外内存)
  • -XX:MaxDirectMemorySize:限制NIO直接内存(如 -XX:MaxDirectMemorySize=512m)。

二、垃圾回收器(GC)相关

1. 指定GC算法
  • -XX:+UseSerialGC:串行回收器(单线程,适合客户端应用)。
  • -XX:+UseParallelGC:并行回收器(多线程,吞吐量优先)。
  • -XX:+UseConcMarkSweepGC:CMS回收器(低延迟,JDK8及之前)。
  • -XX:+UseG1GC:G1回收器(平衡吞吐与延迟,JDK9+默认)。
  • -XX:+UseZGC:ZGC(超低延迟,JDK11+)。
  • -XX:+UseShenandoahGC:Shenandoah(低延迟,RedHat贡献)。
2. GC调优参数
  • -XX:MaxGCPauseMillis:目标最大GC停顿时间(G1默认200ms,如 -XX:MaxGCPauseMillis=100)。
  • -XX:G1HeapRegionSize:G1的Region大小(如 -XX:G1HeapRegionSize=4m)。
  • -XX:ParallelGCThreads:并行GC线程数(默认CPU核数)。
  • -XX:InitiatingHeapOccupancyPercent:G1触发并发周期的堆占用阈值(默认45%)。
3. GC日志与分析
  • -Xloggc:<file>:输出GC日志到文件。
  • -XX:+PrintGCDetails:打印详细GC信息。
  • -XX:+PrintGCDateStamps:显示GC发生的时间戳。
  • -XX:+UseGCLogFileRotation:GC日志轮转(配合-XX:NumberOfGCLogFiles=5-XX:GCLogFileSize=10M)。

三、故障诊断与监控

1. 内存溢出(OOM)处理
  • -XX:+HeapDumpOnOutOfMemoryError:OOM时生成堆快照。
  • -XX:HeapDumpPath=<path>:指定堆快照保存路径。
2. 类加载监控
  • -XX:+TraceClassLoading:跟踪类加载过程。
  • -XX:+TraceClassUnloading:跟踪类卸载过程。
3. 调试参数
  • -XX:NativeMemoryTracking=summary:监控堆外内存使用(通过jcmd <pid> VM.native_memory detail查看)。
  • -XX:+PrintFlagsFinal:查看所有JVM参数的最终值。

四、其他优化参数

1. JIT编译器
  • -XX:+TieredCompilation:分层编译(JDK8默认开启)。
  • -XX:CompileThreshold:触发JIT编译的方法调用阈值。
2. 线程控制
  • -Xss:线程栈大小(如 -Xss256k,默认1M)。
3. 禁用显式GC
  • -XX:+DisableExplicitGC:禁用System.gc()调用(注意可能影响NIO直接内存回收)。

五、生产环境典型配置示例

# 堆内存与GC(G1)
-Xmx4g -Xms4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 # 元空间限制与OOM诊断
-XX:MaxMetaspaceSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs# GC日志
-Xloggc:/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps 

六、回答模板

  1. 分类说明:先按内存、GC、监控等模块分类,避免遗漏。
  2. 核心参数:重点说明-Xmx-Xms-XX:+UseG1GC等高频参数。
  3. 场景结合:例如“高吞吐场景用ParallelGC,低延迟用G1/ZGC”。
  4. 调优原则:强调参数调整前需通过日志(如GC日志)和工具(如jstat、MAT)定位问题。

http://www.ppmy.cn/devtools/166433.html

相关文章

android13打基础: 保存用户免得下次重新登录逻辑

使用SP来做 创建LoginUser.kt // 登录用户需要Email data class LoginUser(val email: String,val password: String, )创建假数据FakeLoginUser.kt object FakeLoginUser {val fake_login_user_items arrayListOf(LoginUser(email "1690544550qq.com",password …

linux下文件读写操作

Linux下&#xff0c;文件I/O是操作系统与文件系统之间进行数据传输的关键部分。文件I/O操作允许程序读取和写入文件&#xff0c;管理文件的打开、关闭、创建和删除等操作。 1. 文件描述符 在Linux中&#xff0c;每个打开的文件都由一个文件描述符来表示。文件描述符是一个非负…

用Nutch库的HTTP请求写个万能下载程序

使用 Apache Nutch 来编写一个万能下载程序&#xff0c;涉及到集成其爬虫功能来抓取网页内容。Apache Nutch 是一个开源的 web 爬虫框架&#xff0c;主要用于抓取大量网页的数据。它是基于 Hadoop 的&#xff0c;可以扩展性地处理大规模的数据抓取任务。Nutch 主要是基于 Java …

vue3深入组件——依赖注入

一、场景介绍:一般父子间信息传递是通过props,但是一个多层嵌套的组件,必须将其沿着组件逐级的传递下去,这就是props的逐级透传。 二、上述情况下,就需要用到provide 和 inject;一个父组件相对于其所有的后代组件,会作为依赖提供者。任何后代的组件树,无论层级有多…

深入探索 Dubbo:高效的 Java RPC 框架

深入探索 Dubbo&#xff1a;高效的 Java RPC 框架 随着微服务架构的流行&#xff0c;分布式系统中的服务间通信变得愈加复杂。Dubbo 作为阿里巴巴开源的高性能 Java RPC 框架&#xff0c;已成为开发高可用、高性能微服务架构的核心工具之一。本文将深入探讨 Dubbo 的核心特性、…

iOS插件,Theos环境搭建与XM文件开发指南(完善版本)

Theos环境搭建与XM文件开发指南 这里写目录标题 Theos环境搭建与XM文件开发指南什么是Theos&#xff1f;Theos的主要特点 Theos环境搭建在macOS上安装Theos在Windows上安装Theos (通过WSL) XM文件详解什么是Logos语法&#xff1f;XM文件基本结构XM文件打包配置1. 核心文件组成T…

【大前端】【Android】whistle配置Android手机代理脚本

Android配置whistle手机代理&#xff0c;为了避免频繁自己手动去WiFi代理输入私有IP地址&#xff0c;特地建了一个Python脚本来帮助一键配置好代理&#xff0c;解除代理。 原始配置流程手续&#xff1a; 需要打开http://127.0.0.1:8899/ 查看whistle的IP和端口号需要打开手机…

【由技及道】量子跃迁部署术:docker+jenkins+Harbor+SSH的十一维交付矩阵【人工智障AI2077的开发日志011】

摘要: SSH密钥对构建的十一维安全通道 Harbor镜像星门 错误吞噬者语法糖 在CI/CD的量子观测中实现熵减永动机&#xff0c;使容器在部署前保持开发与生产维度的叠加态 量子纠缠现状&#xff08;技术背景&#xff09; 在完成镜像构建的量子折叠后&#xff08;构建过程详见前…