如何从 Java 应用程序内部获取 VM 参数?

2022-08-31 06:38:55

我需要检查是否可以显式设置某些可以传递给JVM的选项或具有其默认值。

更具体地说:我需要创建一个具有比默认堆栈大小更高的本机堆栈大小的特定线程,但是如果用户想要通过指定选项自己处理此类事情,我想创建具有默认堆栈大小的所有线程(将由用户在-Xss选项中指定)。-Xss

我已经检查了像 和 这样的类,但这些类没有给我任何关于 VM 参数的有用信息。java.lang.Systemjava.lang.Runtime

有没有办法获得我需要的信息?


答案 1

在启动时传递此-Dname=value

然后在你的代码中你应该使用

value=System.getProperty("name");

获取该值


答案 2

使用此代码,您可以获取 JVM 参数:

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
...
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMxBean.getInputArguments();

推荐