首页 > 解决方案 > 获取特定程序的 JVM 属性

问题描述

我需要在后台运行JVM Arguments特定Java Program的,你是怎么做到的?

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

另一个问题是运行以下代码时我没有得到XMXand属性。XMS

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

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

标签: javajvmmxbean

解决方案


一个明显的非答案:

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

一般来说,你不能。

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

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

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

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


推荐阅读