尽管我们已经为应用程序显式设置了许多 JVM 标志,但很难知道是否:
1. 布尔标志默认已打开(默认值在 JDK/JRE 次要更新之间发生了变化)
2. 一个标志否定另一个标志
3. 特定系统上给定任意标志的默认值是什么(由 Java 人体工程学设置)
总结:
有没有类似的命令行工具
java -XX:+PrintFlagsFinal
,我可以在哪里检查已运行的 JVM 的所有标志值?
对于 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;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)