如何从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);
}
}