アプリケーションに多くの JVM フラグを明示的に設定しましたが、次のことを確認するのは非常に困難です。特定のシステムでの任意のフラグのデフォルト値 (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;
}
}
あなたはjinfoを探しています。コマンドラインからJVMフラグを表示および設定できます。これは、JVM用の多くの広く知られていないツールとユーティリティの1つです。
この手法は、ローカルまたはリモートで実行されているすべての Java アプリケーションに適用されます。
jvisualvm は、JDK 6 Update 7 以降のすべての JDK に含まれています。jvisualvm のビデオ チュートリアルはこちらです。