根据JVM调优参数的命名规律和功能,可以将其分类归纳如下:
一、参数类型与命名规律
-
标准参数 (
-
开头)稳定性高,如
-version
、-help
。 -
非标准参数 (
-X
开头)功能稳定但可能随版本变化,命名多采用英文缩写:
-Xms
:M emory Start(初始堆内存)-Xmx
:M emory MaX(最大堆内存)-Xmn
:New Generation(新生代大小)-Xss
:S tack Size(线程栈大小)
-
高级参数 (
-XX
开头)命名规则更复杂,常见模式:
- 布尔开关 :
-XX:+UseG1GC
(启用G1)、-XX:-UseTLAB
(禁用TLAB) - 数值配置 :
-XX:NewRatio=2
(新生代:老年代=1:2) - 缩写组合 :
-XX:MaxMetaspaceSize
(元空间最大容量)
- 布尔开关 :
二、核心参数分类与示例
1. 内存管理
参数 | 作用 | 记忆规律(英文缩写) |
---|---|---|
-Xms512m |
初始堆内存 | M emory Start |
-Xmx4g |
最大堆内存 | M emory MaX |
-Xmn2g |
新生代大小 | New Generation |
-XX:MetaspaceSize=256m |
元空间初始大小 | Meta(元数据)+ Space(空间) |
-XX:MaxDirectMemorySize=1g |
堆外内存限制 | Direct(直接)+ Memory |
2. 垃圾回收(GC)
参数 | 作用 | 记忆规律 |
---|---|---|
-XX:+UseG1GC |
启用G1垃圾回收器 | Use + G1(算法名) |
-XX:MaxGCPauseMillis=200 |
最大GC停顿时间目标 | Max + GC Pause(停顿) |
-XX:SurvivorRatio=8 |
Eden与Survivor区比例(8:1:1) | Survivor(幸存区)+ Ratio(比例) |
-XX:MaxTenuringThreshold=15 |
对象晋升老年代年龄阈值 | Tenuring(晋升)+ Threshold(阈值) |
3. 线程与并发
参数 | 作用 | 记忆规律 |
---|---|---|
-Xss1m |
线程栈大小 | S tack Size |
-XX:ParallelGCThreads=4 |
并行GC线程数 | Parallel(并行)+ GC线程 |
-XX:ConcGCThreads=2 |
并发GC线程数 | Concurrent(并发) |
4. 性能调优
参数 | 作用 | 记忆规律 |
---|---|---|
-XX:+UseCompressedOops |
启用压缩指针(节省内存) | Compressed (压缩)+ O bject P ointers |
-XX:+DoEscapeAnalysis |
开启逃逸分析(栈上分配对象) | Escape(逃逸)+ Analysis(分析) |
三、记忆规律总结
-
参数前缀:
-X
:非标准参数,多用于内存和基础配置。-XX
:高级调优,覆盖GC、线程、元数据等。
-
缩写逻辑:
- 单字母缩写 :如
ms
(Memory Start)、mx
(Memory Max)。 - 单词组合 :如
NewRatio
(新生代比例)、SurvivorRatio
(幸存区比例)。 - 功能描述 :如
UseG1GC
(使用G1回收器)、HeapDumpOnOutOfMemoryError
(内存溢出时导出堆快照)。
- 单字母缩写 :如
-
版本演进:
- JDK 8后
PermSize
被MetaspaceSize
取代。 - JDK 9后G1成为默认GC。
- JDK 8后
四、调优建议
- 堆内存 :
-Xms
和-Xmx
设为相同值,避免动态扩容开销。 - GC选择:低延迟选G1/ZGC,高吞吐选Parallel GC。
- 监控工具 :结合
jstat
、jmap
和GC日志分析瓶颈。
通过理解参数命名规律,可以更高效地记忆和组合使用JVM调优参数。