获取特定程序的 JVM 属性



我需要在后台运行特定Java ProgramJVM Arguments,您究竟如何做到这一点?

我发现,ManagementFactoryRuntimeMXBean的课程会给我所需的结果。现在我需要用一个特定的程序来做到这一点。

另一个问题是我在运行以下代码时没有获得XMXXMS属性。

RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
List<String> jvmArgs = runtimeMXBean.getInputArguments();

我只得到javaagentDfile属性,但我也需要XMXXMS就像我说的那样。

一个明显的非答案:

我需要让特定 Java 程序的 JVM 参数在后台运行,您究竟如何做到这一点?

一般来说,你不能。

你看,一旦该进程正在运行,传递给它的所有参数都被"消耗"了,这完全取决于该进程会发生什么。

我的意思是:首先不再有"通用"JVM这样的东西。现在实际上有不同的实现。当然,它们都应该支持"标准化"-X 选项。但是每个和任何JVM实现都允许提供"自己的"选项和开关。

长话短说:没有通用的方法可以从正在运行的JVM获取"传递的参数"。

如果你真的关心这一点,我建议:编写你自己的java包装器脚本,简单地将所有命令行参数记录到某种日志中,理想情况下,带有时间戳和包装器脚本使用这些参数调用的"实际"java的进程 ID。

最新更新