就我而言,该值通常与我指定的-Xmx不同。

对于-Xmx810M,它返回了821035008783MB。根据各种(不是真正可靠的)来源,它应该精确返回-Xmx参数指定的值。

我在找:

  • 寻找-Xmx确切值的可靠方法
  • 一些可靠的来源将证明maxMemory()是不正确的
  • 最佳答案

    根据http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4391499(该数据来自2001年,因此在JVM的较新版本中可能已更改):

    “-Xmx标志的解释取决于VM。某些VM,
    (包括HotSpot),请对此选项的有效值设置下限。”

    因此,如先前的回答所述,MaxMemory是准确的,而Xmx标志只是一个建议。

    上面的链接是通过SO上的earlier similar question的答案找到的。

    而且,如果要查找用户指定的Xmx值,那么如果使用Sun(Ahem,Oracle)JVM /,则可以简单地执行以下操作:

    String commandLineInput = System.getProperty("sun.java.command");
    Pattern pattern = Pattern.compile("-Xmx(\\w*)");
    Matcher matcher = pattern.matcher(commandLineInput);
    while(matcher.find()) {
      System.out.println(matcher.group(1));
    }
    

    关于java - 如何检测-Xmx参数的实际值? Runtime.getRuntime()。maxMemory()不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18629369/

    10-09 09:02