我需要在后台运行特定Java Program
的JVM Arguments
,您究竟如何做到这一点?
我发现,ManagementFactory
和RuntimeMXBean
的课程会给我所需的结果。现在我需要用一个特定的程序来做到这一点。
另一个问题是我在运行以下代码时没有获得XMX
和XMS
属性。
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
List<String> jvmArgs = runtimeMXBean.getInputArguments();
我只得到javaagent
和Dfile
属性,但我也需要XMX
和XMS
就像我说的那样。
一个明显的非答案:
我需要让特定 Java 程序的 JVM 参数在后台运行,您究竟如何做到这一点?
一般来说,你不能。
你看,一旦该进程正在运行,传递给它的所有参数都被"消耗"了,这完全取决于该进程会发生什么。
我的意思是:首先不再有"通用"JVM这样的东西。现在实际上有不同的实现。当然,它们都应该支持"标准化"-X 选项。但是每个和任何JVM实现都允许提供"自己的"选项和开关。
长话短说:没有通用的方法可以从正在运行的JVM获取"传递的参数"。
如果你真的关心这一点,我建议:编写你自己的java
包装器脚本,简单地将所有命令行参数记录到某种日志中,理想情况下,带有时间戳和包装器脚本使用这些参数调用的"实际"java
的进程 ID。