报告 JVM 中的实际 GC 设置

Report on Actual GC Settings in JVM

如何报告 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);

    }
}