You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启动Jar包时,如何查看JVM的默认参数及隐藏参数

Hey there! Let's break down your questions about JVM default and hidden parameters clearly:

如何查看JVM的默认参数

有几个实用命令可以帮你快速获取JVM的默认配置:

  • 查看最终生效的所有参数(包含默认值+你显式指定的参数):
    运行命令 java -XX:+PrintFlagsFinal -version。输出会列出所有JVM参数的最终值,比如堆内存大小、垃圾收集器类型等。你会看到参数值前的标记:=表示是默认值,:=表示被手动指定或JVM自动调整过的值。
  • 查看初始默认参数(排除手动指定的调整):
    使用 java -XX:+PrintFlagsInitial -version,这个命令会展示JVM启动时的初始默认设置,不过部分参数可能在启动过程中被JVM根据系统环境自动调整。
  • 快速查看核心配置:
    如果你只需要看堆、栈、元空间这些关键默认值,java -XshowSettings:all -version 更友好,输出简洁易懂,适合快速排查基础配置。
关于JVM的"隐藏参数"

答案是肯定的——除了我们日常显式指定的参数(比如 -XX:MaxPermSize=256m 或 -Xmx1g),确实存在大量未完全文档化的隐藏参数,大多以 -XX: 开头,主要用于JVM调试、特定场景优化或者内部测试。

如何查找这些隐藏参数:

  • 用PrintFlagsFinal命令全量输出:
    前面提到的 java -XX:+PrintFlagsFinal -version 其实已经包含了所有隐藏参数,不管有没有官方文档。你可以把输出重定向到文件慢慢分析:java -XX:+PrintFlagsFinal -version > jvm_all_flags.txt。
  • 解锁实验性参数:
    有些更底层的实验性隐藏参数需要先解锁才能看到,加上 -XX:+UnlockExperimentalVMOptions 参数即可:java -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -version。这类参数通常是JVM团队正在测试的功能,生产环境使用要格外谨慎。
  • 查看JVM源码:
    如果你想深入了解某个隐藏参数的作用,OpenJDK的源码是最权威的参考。比如在 src/hotspot/share/runtime/arguments.cpp 文件中,能找到大部分参数的定义、默认值和生效逻辑——当然,这需要你有一定的C++基础。

⚠️ 注意:隐藏参数没有官方支持,不同JVM厂商(Oracle JDK、OpenJDK、Azul Zulu等)或版本之间可能存在差异,甚至在版本迭代中被移除或修改。生产环境使用前一定要充分测试!

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:20:28