3

私の場合、この値は通常、-Xmx指定した値とは異なります。

-Xmx810M返されたの821035008783MBです。さまざまな(真に信頼できるわけではない)ソースによると、-Xmxパラメーターで指定された値を正確に返す必要があります。

を探している:

  1. の正確な値を見つける信頼できる方法-Xmx
  2. maxMemory()それが正確ではないことを証明する信頼できる情報源
4

2 に答える 2

6

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4391499によると(これは 2001 年のものであるため、JVM の新しいバージョンでは変更されている可能性があります):

「-Xmx フラグの解釈は VM に依存します。HotSpot を含む一部の VM は、このオプションの有効な値に下限を適用します。」

したがって、前の回答が述べたように、MaxMemory は正確であり、Xmx フラグは単なる提案です。

上記のリンクは、SO に関する以前の同様の質問への回答から見つかりました。

また、ユーザーが指定した 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));
}
于 2013-09-05T07:05:28.330 に答える
1

Runtime.maxMemory() は正確です。-Xmxないオプションです。どのくらい不正確かはバージョンによって異なり、正確な設定というよりはヒントのようなものかどうかはわかりません。

totalMemory() が maxMemory() と一致すると、メモリが不足しています。

于 2013-09-05T06:59:14.333 に答える