4

アプリケーションに多くの JVM フラグを明示的に設定しましたが、次のことを確認するのは非常に困難です。特定のシステムでの任意のフラグのデフォルト値 (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用の多くの広く知られていないツールとユーティリティの1つです。

于 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. ツリーで [your application] (pid [n]) をダブルクリックします
  5. 右側には、アプリケーションのタブに検査内容があります。「概要」タブの中央に、アプリケーションの JVM 引数が表示されます。

jvisualvm は、JDK 6 Update 7 以降のすべての JDK に含まれています。jvisualvm のビデオ チュートリアルはこちらです。

于 2014-07-08T05:09:49.413 に答える