Java VM参数:以编程方式正确检索

Java VM参数:以编程方式正确检索,java,jvm,arguments,Java,Jvm,Arguments,我试图通过编程从Java应用程序中检索VM参数 在做了一些研究之后,我发现了一个似乎是完美的解决方案: ManagementFactory.getRuntimeMXBean().getInputArguments(); 但是,当参数的内容包含空格字符时,该参数将被拆分,并且列表中最多只显示该空格字符 使用示例VM参数-Xmx1024mb-javaagent:“C:/Users/Thompson Main/Documents/app.jar”,将返回以下列表: [0] -> -Xmx10

我试图通过编程从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参数由于包含不可避免的空格而被截断,我不能假设我的所有用户在文件路径中都缺少空格字符。在我看来,这个bug使得ManagementFactory和RuntimeMXBean毫无用处


我已经做了更多的研究,但是我还没有找到一种替代的、成功的方法来在Java6中完整地检索VM参数(感谢Jean Philippe让我知道它在Java7中工作)


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

这是一个JDK错误,已在JDK 7中更正:

好的解决方案:升级到Java7


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

这是一个JDK错误,在JDK 7中得到纠正:

好的解决方案:升级到Java7


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

出于兴趣,索引
[2]
?@gregkopf My bad,实际上索引2和3上有一些对象我不小心从问题中漏掉了。出于兴趣,索引
[2]上有什么
?@gregkopf My bad,实际上索引2和索引3中有一些对象我不小心从问题中漏掉了。谢谢,但不幸的是,我不会升级到Java 7,因为它在我的应用程序的用户群中的渗透率非常低。幸运的是,我需要分析的所有参数都将以.jar结尾,因此如果出现错误,我可以重新构建它t行以参数(如“-javaagent:”)开头,但不以“.jar”结尾.Accepted answer。谢谢,但不幸的是,我不会升级到Java 7,因为它在我的应用程序用户群中的渗透性非常低。幸运的是,我需要分析的参数都将以.jar结尾,因此如果当前行以参数开头(如“-javaagent:”),但不是以.jar结尾,我可以重新构建它。Accepted answer。