根据JVM调优参数的命名规律和功能,可以将其分类归纳如下:
一、参数类型与命名规律
-
标准参数(
-开头)
稳定性高,如-version、-help。 -
非标准参数(
-X开头)
功能稳定但可能随版本变化,命名多采用英文缩写:-Xms:Memory Start(初始堆内存)-Xmx:Memory MaX(最大堆内存)-Xmn:New Generation(新生代大小)-Xss:Stack Size(线程栈大小)
-
高级参数(
-XX开头)
命名规则更复杂,常见模式:- 布尔开关:
-XX:+UseG1GC(启用G1)、-XX:-UseTLAB(禁用TLAB) - 数值配置:
-XX:NewRatio=2(新生代:老年代=1:2) - 缩写组合:
-XX:MaxMetaspaceSize(元空间最大容量)
- 布尔开关:
二、核心参数分类与示例
1. 内存管理
| 参数 | 作用 | 记忆规律(英文缩写) |
|---|---|---|
-Xms512m | 初始堆内存 | Memory Start |
-Xmx4g | 最大堆内存 | Memory 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 | 线程栈大小 | Stack Size |
-XX:ParallelGCThreads=4 | 并行GC线程数 | Parallel(并行)+ GC线程 |
-XX:ConcGCThreads=2 | 并发GC线程数 | Concurrent(并发) |
4. 性能调优
| 参数 | 作用 | 记忆规律 |
|---|---|---|
-XX:+UseCompressedOops | 启用压缩指针(节省内存) | Compressed(压缩)+ Object Pointers |
-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调优参数。