就我而言,该值通常与我指定的-Xmx
不同。
对于-Xmx810M
,它返回了821035008
的783MB
。根据各种(不是真正可靠的)来源,它应该精确返回-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/