可通过jdk工具查看jvm参数:jps -v或ps查启动参数;jinfo -flags 查运行中全部参数(含默认值);java -xx:+printflagsfinal -version查所有参数终态值;jmap -heap 验证堆与gc实际配置。

可以直接通过 JDK 自带的命令工具查看 JVM 运行时参数,不同场景对应不同方法,核心在于区分“启动时显式配置”和“运行中实际生效值”。
启动时用了哪些参数?用 jps -v 或 ps
这两个命令能快速看到 Java 进程启动时明确传入的 JVM 参数:
-
jps -v:只显示本机 Java 进程及其完整启动参数(如
-Xms2g -Xmx2g -XX:+UseG1GC),简单直接,推荐首选 -
ps -ef | grep java:适用于容器或非标准 JDK 环境,从系统进程命令行中提取参数,注意需人工识别 CMD 列中的
java命令部分
运行中所有参数(含默认值)?用 jinfo -flags
针对正在运行的 Java 进程(已知 PID),jinfo -flags <pid></pid> 可输出全部 JVM 参数,包括:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 用户显式设置的参数(如
-Xmx4g) - JVM 自动推导的隐式参数(如
-XX:InitialHeapSize=4294967296) - 未修改的默认值(如
-XX:+UseCompressedOops)
注意:jinfo 无法显示编译期静态参数(如 -XX:+TieredStopAtLevel 是否启用 JIT 分层编译),但覆盖了绝大多数调优相关配置。
想看全部参数最终值(含布尔/数值型)?用 java -XX:+PrintFlagsFinal
这不是查运行中进程,而是模拟 JVM 启动并打印所有参数的终态值:
- 执行
java -XX:+PrintFlagsFinal -version > flags.txt,输出约 900+ 行参数 - 每行格式为:
uintx MaxHeapSize := 4294967296 {product}(:=表示被修改过;=表示使用默认值) - 配合
grep快速定位关键项,例如:grep -i "heap\|metaspace" flags.txt
顺便确认堆和 GC 配置?用 jmap -heap
这个命令不列参数字符串,但以人类可读方式展示内存布局的实际效果:
-
jmap -heap <pid></pid>输出包括:初始/最大堆大小、新生代占比、GC 器类型、各代具体容量等 - 适合验证
-Xmn、-XX:NewRatio、-XX:+UseZGC等是否真正生效 - 结果中 “using parallel gc” 或 “using g1 gc” 直接表明当前 GC 策略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










