java - 虚拟机参数 : Retrieve correctly and programmatically

标签 java jvm arguments

我正在尝试以编程方式从 Java 应用程序中检索 VM 参数。


经过一些研究,我发现了一个似乎完美的解决方案:

ManagementFactory.getRuntimeMXBean().getInputArguments();

但是,当参数的内容包含空格字符时,该参数将被拆分,并且列表中仅出现该空格字符。

使用示例 VM 参数 -Xmx1024mb -javaagent:"C:/Users/Thompson Main/Documents/app.jar",将返回以下列表:

[0] -> -Xmx1024mb
[1] -> -javaagent:C:/Users/Thompson
[2] -> Main/Documents/app.jar
[3] -> -Dfile.encoding=Cp1252

第二个 VM 参数由于包含不可避免的空格而被截断,并且我不能假设我的所有用户在文件路径中都缺少空格字符。在我看来,这个错误使得 ManagementFactory 和 RuntimeMXBean 毫无用处。


我做了更多的研究,但我还没有找到一种替代的、成功的方法来在 Java 6 中完整地检索 VM 参数(感谢 Jean-Philippe 让我知道它在 Java 7 中有效)。

从应用程序内获取 VM 参数的另一种方法是什么?

最佳答案

这是一个 JDK 错误,已在 JDK 7 中更正:RuntimeMXBean.getInputArguments() doesn't handle arguments with spaces properly .

好的解决方案:升级到 Java 7。

丑陋的解决方案:重建参数,但它会变得很糟糕:(

关于java - 虚拟机参数 : Retrieve correctly and programmatically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11319988/

相关文章:

java - 如何在 xpath 中选择多个标签

java - 如何在 ICU4J 中合并音译规则?

Java 与 Scala 线程——在 JVM 的幕后

android - 无法启动Gradle守护程序。而且由于非ASCII字符而无法加载Project

java - 分析gc日志

powershell - Powershell:如何将参数数组传递给将在命令上应用的参数

javascript - JavaScript 函数作用域如何处理参数?

java - 名称为 'defaultReference' 的多个反向引用属性!为什么?

java - 在java中创建过滤器示例rapidminer运算符

javascript - 将多个参数传递给柯里化(Currying)函数