是否可以在运行时获取JVM CompileThreshold的当前值?

如果是手动设置的,我可以从VM Arguments那里得到它。否则,我可能会采用默认值(例如,服务器上的Oracle HotSpot为10,000),但这可能是不正确的。有更好的办法吗?

目的是在启动过程中“预热”某些功能。

最佳答案

您可以从HotSpotDiagnosticMXBean检索此信息。

static final String HOTSPOT_BEAN_NAME = "com.sun.management:type=HotSpotDiagnostic";

public static void main(String[] args) throws Exception {
    Class clazz = Class.forName("com.sun.management.HotSpotDiagnosticMXBean");
    MBeanServer server = ManagementFactory.getPlatformMBeanServer();
    HotSpotDiagnosticMXBean bean = (HotSpotDiagnosticMXBean) ManagementFactory
            .newPlatformMXBeanProxy(server, HOTSPOT_BEAN_NAME, clazz);
    VMOption vmOption = bean.getVMOption("CompileThreshold");
    System.out.printf("%s = %s%n", vmOption.getName(), vmOption.getValue());
}


输出

CompileThreshold = 10000

关于java - 在运行时获取JVM的编译器阈值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31742008/

10-11 19:06