虽然我们已经为应用程序显式设置了许多JVM标志,但是很难知道: 1.默认情况下,布尔标志已经打开(默认值在次要JDK / JRE更新之间更改) 一面旗帜否定了另一面 3.给定任意标志的默认值在您的特定系统上是什么(由Java人体工程学设置)
总结: 是否有类似于
的命令行工具java -XX:+PrintFlagsFinal
,我可以检查已经运行的JVM的所有标志值吗?
答案 0 :(得分: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;
}
}
答案 1 :(得分:1)
您正在寻找jinfo。它允许您从命令行查看和设置JVM标志。它是JVM众多广为人知的Tools and Utilities之一。
答案 2 :(得分:0)