jvm调优参数
以下是常用的 JVM 调优参数详解(中文说明),涵盖内存管理、垃圾回收、性能监控等核心场景,按类别分类整理:
一、堆内存设置(核心参数)
-
初始堆大小
-Xms<size>
示例:-Xms4g
说明:JVM 启动时分配的初始堆内存(建议与-Xmx相同,避免动态调整开销)。 -
最大堆大小
-Xmx<size>
示例:-Xmx8g
说明:堆内存可扩展到的最大值(通常设为物理内存的 50%~70%)。 -
新生代大小
-Xmn<size>
示例:-Xmn2g
说明:设置新生代(Young Gen)大小(过小增加 Minor GC 频率,过大会减少老年代空间)。 -
元空间大小
-XX:MetaspaceSize=<size>
-XX:MaxMetaspaceSize=<size>
示例:-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
说明:控制元空间(替代 PermGen)初始和最大容量(避免元空间 OOM)。
二、垃圾回收器选择
1. 串行回收器(单线程)
-XX:+UseSerialGC # 新生代 Serial + 老年代 Serial Old
2. 并行回收器(吞吐量优先)
-XX:+UseParallelGC # 新生代 Parallel Scavenge + 老年代 Parallel Old
-XX:ParallelGCThreads=<n> # 设置并行 GC 线程数(建议 = CPU 核心数)
-XX:MaxGCPauseMillis=<ms> # 目标最大 GC 停顿时间(毫秒)
-XX:GCTimeRatio=<ratio> # GC 时间与应用时间占比(默认 99,即 1%)
3. CMS 回收器(低延迟)
-XX:+UseConcMarkSweepGC # 新生代 ParNew + 老年代 CMS
-XX:CMSInitiatingOccupancyFraction=<percent> # 老年代使用率触发 CMS(默认 68%)
-XX:+UseCMSInitiatingOccupancyOnly # 强制使用设定阈值触发 CMS
4. G1 回收器(平衡型,JDK9+ 默认)
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200 # 目标停顿时间(通常 100-200ms)
-XX:G1HeapRegionSize=<size> # 分区大小(1MB~32MB,需为 2 的幂)
-XX:InitiatingHeapOccupancyPercent=45 # 堆使用率触发并发标记(默认 45%)
5. ZGC / Shenandoah(超低延迟,JDK11+)
-XX:+UseZGC # JDK11+ 支持
-XX:+UseShenandoahGC # JDK12+ 支持
-XX:ZAllocationSpikeTolerance=5 # ZGC 分配尖峰容忍度(默认 2.0)
三、GC 日志与监控
-
开启详细 GC 日志
-XX:+PrintGCDetails # 打印 GC 详情 -XX:+PrintGCDateStamps # 添加时间戳 -Xloggc:/path/to/gc.log # 输出到文件 -
实时监控工具支持
-XX:+HeapDumpOnOutOfMemoryError # OOM 时生成堆转储 -XX:HeapDumpPath=/path/to/dump.hprof # 指定转储路径 -XX:NativeMemoryTracking=summary # 开启 NMT 监控(detail 模式更详细) -
GC 日志增强(JDK9+ 使用 Unified Logging)
-Xlog:gc*,gc+heap=debug:file=gc.log:time:filecount=5,filesize=100m
四、JIT 编译优化
-
方法编译阈值
-XX:CompileThreshold=10000 # 方法调用次数阈值(触发 JIT) -
代码缓存大小
-XX:ReservedCodeCacheSize=256m # 避免 JIT 因代码缓存满失效 -
分层编译策略(JDK8 默认)
-XX:+TieredCompilation # 结合 C1(快速编译)和 C2(优化编译)
五、其他关键参数
-
直接内存限制
-XX:MaxDirectMemorySize=<size>
说明:限制 NIO 直接内存分配(默认与-Xmx相同)。 -
线程堆栈大小
-Xss<size>
示例:-Xss1m
说明:减少可创建线程数,但过小易导致StackOverflowError。 -
禁用显式 GC
-XX:+DisableExplicitGC
说明:阻止System.gc()触发 Full GC(但需确保 NIO 等不依赖它)。
调优建议流程
- 监控先行:使用
jstat、jstack、VisualVM 等工具分析瓶颈(GC 频率、STW 时间、内存泄漏)。 - 循序渐进:每次只调整 1-2 个参数,对比监控结果。
- 场景适配:
- 高吞吐:
UseParallelGC+ 大堆 + 多线程。 - 低延迟:
UseG1GC/ZGC+ 合理MaxGCPauseMillis。
- 高吞吐:
- 压测验证:模拟生产流量,观察 Full GC、CPU 负载、RT 变化。
? 注意事项:
- 生产环境务必设置
-Xms=-Xmx,避免堆震荡。- 容器部署时使用
-XX:+UseContainerSupport(JDK8u191+),确保 JVM 识别容器内存限制。
根据实际应用特征(如大数据处理、Web 服务)结合监控数据调整,避免盲目套用参数!
基于臭氧的Kafka自适应调优方法ENLHS
,如果不针对实际资源环境进行调优, Kafka使用默认的配置参数无法保证其在毎个生产环境下的性能。因为Kaka自身的配置项非常大,传统的自适应算
资料下载
佚名
2021-05-13 11:39:52
jvm调优主要是调哪里
,栈内存存储方法调用和局部变量,非堆内存用于存储加载的类信息以及一些静态变量等。 1.1 堆内存调优 堆内存是JVM中最主要的内存区域,常见的
2023-12-05 11:37:24
Alluxio线程池结构与吞吐量调优
本文介绍了 Alluxio Master 的线程池结构与每个线程的功能。在调优过程中,利用分析结果调整审计日志的 blocking queue,调整 UFS-SYNC-PREFETCH 线程数,
2022-11-11 11:36:24
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机