一、查看启动时显式参数
jps -v
-
功能:列出所有Java进程及其显式传递的JVM参数(如
-Xmx
、-XX:+UseG1GC
)。 -
示例:
bashjps -v 输出示例:23864 common-mistakes-0.0.1-SNAPSHOT.jar -Xms1g -Xmx1g
说明:适用于快速查看进程启动时指定的参数。
-
ps -ef | grep java
-
功能:通过系统进程查看命令行中显式设置的JVM参数(需在
CMD
列中识别)。 -
示例:
bashps -ef | grep java 输出示例:java -Xms1g -Xmx1g -jar app.jar
适用场景:容器或非JDK环境下的参数查看。
-
二、查看所有默认参数(含隐式参数)
java -XX:+PrintFlagsFinal -version
-
功能:打印JVM所有参数的最终值(包括默认值和用户修改后的值)。
-
输出格式:
name = value
:未修改的默认值。name := value
:被修改后的值。
-
示例:
bashjava -XX:+PrintFlagsFinal -version > flags.txt 查看堆内存参数:grep -i heap flags.txt
关键参数 :
MaxHeapSize
(最大堆)、InitialHeapSize
(初始堆)、MetaspaceSize
(元空间)。
-
-XX:+PrintCommandLineFlags
-
功能:仅打印启动时显式和隐式设置的参数(如
-XX:InitialHeapSize
)。 -
示例:
bashjava -XX:+PrintCommandLineFlags -version 输出示例:-XX:InitialHeapSize=134217728 -XX:MaxHeapSize=2147483648 ```。
-
三、实时查看运行中JVM参数
-
jinfo
-
查看单个参数:
bashjinfo -flag 示例:查看最大堆大小 jinfo -flag MaxHeapSize 12345
输出 :
-XX:MaxHeapSize=4294967296
。 -
查看所有参数:
bashjinfo -flags 输出所有JVM参数(含默认值和修改值) ```。
-
-
jmap -heap
-
功能:查看堆内存配置及GC信息(如堆大小、新生代比例)。
-
示例:
bashjmap -heap 输出示例:Heap Configuration: NewSize=20.0MB, MaxHeapSize=4096.0MB ```。
-
四、容器环境中的参数查看
- Docker容器
-
进入容器后使用
jcmd
:bashdocker 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` |
查看所有参数(含默认) | java -XX:+PrintFlagsFinal |
参数键值对(含修改标记) |
实时动态参数 | jinfo -flags |
运行中参数值 |
容器环境 | docker exec ... jcmd VM.flags |
容器内JVM参数 |
注意:生产环境建议结合监控工具(如Prometheus+Grafana)持续跟踪参数变化。