# JVM参数
# 常用的JVM参数设置
以下分版本列出了JVM常用的参数设置(分为Java8、Java13)
# Java8
| 参数 | 意义 |
|---|---|
| -verbose:gc | 打印 GC 日志 |
| PrintGCDetails | 打印详细 GC 日志 |
| PrintGCDateStamps | 系统时间,更加可读,PrintGCTimeStamps 是 JVM 启动时间 |
| PrintGCApplicationStoppedTime | 打印 STW 时间 |
| PrintTenuringDistribution | 打印对象年龄分布,对调优 MaxTenuringThreshold 参数帮助很大 |
| loggc | 将以上 GC 内容输出到文件中 |
OOM相关参数:
| 参数 | 意义 |
|---|---|
| HeapDumpOnOutOfMemoryError | OOM 时 Dump 信息,非常有用 |
| HeapDumpPath | Dump 文件保存路径 |
| ErrorFile | 错误日志存放路径 |
| OmitStackTraceInFastThrow | 缩简日志输出,默认开启的。 开启时,如果你多次发生了空指针异常,将只会打印java.lang.NullPointerException,而不会打印堆栈信息。 通常需要修改为关闭。 |
# Java13
从Java9开始移除了40多个GC日志相关的参数,所以相关配置变化很大。
JAVA_OPT_LOG=" -verbose:gc"
JAVA_OPT_LOG="${JAVA_OPT_LOG} -Xlog:gc,gc+ref=debug,gc+heap=debug,gc+age=trace:file=${LOG_DIR}/gc_%p.log:tags,uptime,time,level"
JAVA_OPT_LOG="${JAVA_OPT_LOG} -Xlog:safepoint:file=${LOG_DIR}/safepoint_%p.log:tags,uptime,time,level"
JAVA_OPT_OOM=" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_DIR} -XX:ErrorFile=${LOG_DIR}/hs_error_pid%p.log "
JAVA_OPT="${JAVA_OPT_LOG} ${JAVA_OPT_OOM}"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
echo $JAVA_OPT
# Q&A
- 为什么建议将Xmx和Xms设置成一样的?
- 如果各个区参数未设置好,存在动态扩容问题是个什么场景?
- MinorGC和MajorGC跟youngGC和FullGC的区别?
- JVM中如何设置参数?生产上做过哪些参数设置?
- 做过哪些JVM参数优化?
内存分配参数:
- Xms
- Xmx
- Xmn
- PermSize/MetaspaceSize
- MaxPermSize/MetaspaceSize
- Xss
GC策略参数:
- SurvivorRatio
- PretenureSzieThreshold
- MaxTenuringThreshold
- ParallelRefProcEnabled
- ParallelGCThreads
- UseSerialGC
- UseParNewGC
- CMSParallelRemarkEnabled
- UseParallelGC
- UseAdaptiveSizePolicy
- MaxTimeRatio
- MaxGCPauseMillis(常和G1配合使用)
- UseParallelOldGC
- UseConcMarkSweepGC
- CMSInitiatingOccupancyFraction
- UseCMSInitiatingOccupancyOnly
- UseCMSCompactAtFullCollection
- CMSFullGCsBeforeCompaction
- CMSClassUnloadingEnabled
- UseG1GC
- DisableExplicitGC
G1配置参数:
- G1NewSizePercent
- G1MaxNewSziePercent
- G1HeapRegionSize
- ConcGCThreads
- InitiatingHeapOccupancyPercent
- G1HeapWastePercent
- G1MixedGCCountTarget
- G1PrintRegionLivenessInfo
- G1ReservePercent
- G1SummarizeRSetStats
- G1TraceConcRefinement
- GCTimeRatio
GC日志参数:
- Xloggc
- UseGCLogFileRotation
- NumberOfGCLogFiles
- GCLogFileSize
- PrintGCDetails
- PrintGCDateStamps
- PrintTenuringDistribution
- PrintGCApplicationStoppedTime
- PrintHeapAtGC
异常参数:
- HeapDumpOnOutOfMemoryError(-XX:+HeapDumpOnOutOfMemoryError)
- HeapDumpPath(-XX:HeapDumpPath=/data/dump/jvm.dump)
其他:
- server(-server)
- TieredCompilation(-XX:+TieredCompilation)