4

尽管我们已经为我们的应用程序明确设置了许多 JVM 标志,但很难知道: 1. 默认情况下,布尔标志已经打开(默认值在 JDK/JRE 次要更新之间更改) 2. 一个标志否定其他 3。给定任意标志的默认值在您的特定系统上是什么(由 Java 人体工程学设置)

总结一下:有没有类似的命令行工具

java -XX:+PrintFlagsFinal

,我可以在哪里检查已经运行的 JVM 的所有标志值?

4

3 回答 3

4

对于 HotSpot,您可以使用(来自 ehcache)

private static String getHotSpotVmOptionValue(String name) {
    try {
        MBeanServer server = ManagementFactory.getPlatformMBeanServer();
        ObjectName beanName = ObjectName.getInstance("com.sun.management:type=HotSpotDiagnostic");
        Object vmOption = server.invoke(beanName, "getVMOption", new Object[] {name}, new String[] {"java.lang.String"});
        return (String)((CompositeData)vmOption).get("value");
    } catch (Throwable t) {
        return null;
    }
}
于 2013-02-01T12:50:48.557 回答
1

您正在寻找jinfo。它允许您从命令行查看和设置 JVM 标志。它是用于 JVM的众多广为人知的工具和实用程序之一。

于 2013-02-01T13:12:11.717 回答
0

此技术适用于任何本地或远程运行的 java 应用程序。

  1. 启动您的 Java 应用程序
  2. 运行JDK 中找到的JVisualVM(例如 C:\Program Files\Java\jdk1.8.0_05\bin\jvisualvm.exe)
  3. 当这个有用的工具启动时,查看“本地”树节点下正在运行的 java 应用程序的列表。
  4. 双击树中的 [您的应用程序] (pid [n])
  5. 在右侧,应用程序选项卡中将显示检查内容。在 Overview 选项卡的中间,您将看到应用程序的 JVM 参数。

jvisualvm 可以在自 JDK 6 Update 7 以来的任何 JDK 中找到。关于 jvisualvm 的视频教程在这里。

于 2014-07-08T05:09:49.413 回答