一、查看启动时显式参数
jps -v- 功能:列出所有Java进程及其显式传递的JVM参数(如
-Xmx、-XX:+UseG1GC)。 - 示例:
说明:适用于快速查看进程启动时指定的参数。jps -v 输出示例:23864 common-mistakes-0.0.1-SNAPSHOT.jar -Xms1g -Xmx1g
- 功能:列出所有Java进程及其显式传递的JVM参数(如
ps -ef | grep java- 功能:通过系统进程查看命令行中显式设置的JVM参数(需在
CMD列中识别)。 - 示例:
适用场景:容器或非JDK环境下的参数查看。ps -ef | grep java 输出示例:java -Xms1g -Xmx1g -jar app.jar
- 功能:通过系统进程查看命令行中显式设置的JVM参数(需在
二、查看所有默认参数(含隐式参数)
java -XX:+PrintFlagsFinal -version- 功能:打印JVM所有参数的最终值(包括默认值和用户修改后的值)。
- 输出格式:
name = value:未修改的默认值。name := value:被修改后的值。
- 示例:
关键参数:java -XX:+PrintFlagsFinal -version > flags.txt 查看堆内存参数:grep -i heap flags.txtMaxHeapSize(最大堆)、InitialHeapSize(初始堆)、MetaspaceSize(元空间)。
-XX:+PrintCommandLineFlags- 功能:仅打印启动时显式和隐式设置的参数(如
-XX:InitialHeapSize)。 - 示例:
java -XX:+PrintCommandLineFlags -version 输出示例:-XX:InitialHeapSize=134217728 -XX:MaxHeapSize=2147483648 ```。
- 功能:仅打印启动时显式和隐式设置的参数(如
三、实时查看运行中JVM参数
jinfo- 查看单个参数:
输出:jinfo -flag 示例:查看最大堆大小 jinfo -flag MaxHeapSize 12345-XX:MaxHeapSize=4294967296。 - 查看所有参数:
jinfo -flags 输出所有JVM参数(含默认值和修改值) ```。
- 查看单个参数:
jmap -heap- 功能:查看堆内存配置及GC信息(如堆大小、新生代比例)。
- 示例:
jmap -heap 输出示例:Heap Configuration: NewSize=20.0MB, MaxHeapSize=4096.0MB ```。
四、容器环境中的参数查看
- Docker容器
- 进入容器后使用
jcmd:docker exec -it sh jcmd VM.flags 输出所有JVM参数(如-XX:MaxGCPauseMillis=200) ```。 - 注意:需确保容器内安装JDK工具链。
- 进入容器后使用
五、其他辅助工具
- VisualVM
- 功能:图形化查看JVM参数、堆内存、线程状态等(需JDK 6+)。
- 操作:启动后双击目标进程,进入"概述"标签页查看参数。
- JConsole
- 功能:监控JVM运行时参数及性能指标(需启用JMX)。
- 启动:
jconsole。
总结
| 场景 | 推荐命令 | 输出内容 |
|---|---|---|
| 查看显式启动参数 | jps -v 或 ps -ef | grep java |
进程ID及显式参数 |
| 查看所有参数(含默认) | java -XX:+PrintFlagsFinal |
参数键值对(含修改标记) |
| 实时动态参数 | jinfo -flags |
运行中参数值 |
| 容器环境 | docker exec ... jcmd VM.flags |
容器内JVM参数 |
注意:生产环境建议结合监控工具(如Prometheus+Grafana)持续跟踪参数变化。