如何从Java报告GC设置?我知道我RuntimeMXBean可以通过getInputArguments()报告输入参数,我可以用它来报告设置。我宁愿询问GC对象并报告那里的实际设置。

有没有办法从Java应用程序中访问这些设置?

以下命令显示了我未设置的所有设置,我想编写一个小应用程序来验证这些设置的准确性

java -XX+PrintCommandLineFlags

最佳答案

获取标志列表的一种方法是使用jcmd MBean。

下面的代码段显示了JVM XX标志

public class GetFlags {

    public static void main(String[] args) throws MalformedObjectNameException {

        MBeanServer server = ManagementFactory.getPlatformMBeanServer();

        ObjectName name = ObjectName.getInstance("com.sun.management:type=DiagnosticCommand");

        DiagnosticCommand_vmFlags vmFlags = JMX.newMXBeanProxy(server, name, DiagnosticCommand_vmFlags.class);

        System.out.println("Short version");
        System.out.println(vmFlags.vmFlags());

        System.out.println("Verbose version");
        System.out.println(vmFlags.vmFlags("-all"));
    }


    public interface DiagnosticCommand_vmFlags {

        public String vmFlags(String... args);

    }
}

07-24 20:22