一尘不染

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

java

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

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

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

有什么方法可以获取我需要的信息吗?


阅读 887

收藏
2020-03-07

共2个答案

一尘不染

通过此代码,你可以获取JVM参数:

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
...
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMxBean.getInputArguments();
2020-03-07
一尘不染

在启动时通过 -Dname=value

然后在代码中应该使用

value=System.getProperty("name");

获得那个价值

2020-03-08