私の場合、この値は通常、-Xmx
指定した値とは異なります。
-Xmx810M
返されたの821035008
は783MB
です。さまざまな(真に信頼できるわけではない)ソースによると、-Xmx
パラメーターで指定された値を正確に返す必要があります。
を探している:
- の正確な値を見つける信頼できる方法
-Xmx
maxMemory()
それが正確ではないことを証明する信頼できる情報源
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));
}
Runtime.maxMemory() は正確です。-Xmx
ないオプションです。どのくらい不正確かはバージョンによって異なり、正確な設定というよりはヒントのようなものかどうかはわかりません。
totalMemory() が maxMemory() と一致すると、メモリが不足しています。