この質問に従っていますが、すべての情報が古くなっていることがわかりました。
最新のガイドは、GC チューニングに関するこのドキュメントのようです。その中で、オラクルは愚かな用語エルゴノミクスを定義しています。これは、合理的な(「快適な」)デフォルトを意味すると思います。そのドキュメントでは、このドキュメントが参照されており、上記の SO の質問で頻繁に引用されています。
最大ヒープサイズは次のように計算されると主張しています。
物理メモリの 1/4 または 1GB のいずれか小さい方。J2SE 5.0 より前では、デフォルトの最大ヒープ サイズは 64MB でした。-Xmx コマンド行オプションを使用して、このデフォルトをオーバーライドできます。
で確認したように、12 GB の RAM と 4096 MB のマシンでテストしたため、これは明らかに誤りjava -XX:+PrintFlagsFinal -version | grep HeapSize
です。ただし、警告が含まれています。
注: ヒープ サイズの境界と分数は、J2SE 5.0 に対して正しいものです。コンピュータがより強力になるにつれて、これらは後続のリリースで異なる可能性があります。
これは素晴らしいです!これに関する最新のドキュメントが見つからないことを除いて。この質問に従ってサーバークラスを実行していることを確認しました。何でこれが大切ですか?私の 12 GB サーバー クラスのマシンはデフォルトで 170 MB に設定されているためです。すべてが壊れます。はい、これをオーバーライドできることは承知しています。実行するすべてのアプリケーションでそのオーバーライドを複製する必要はなく、pom ファイルにハード コードすることも避けたいと考えています。さらに重要なことに、この数値は私のマシンでどういうわけかランダムに変更されたので、どのようにして数値が変化したのかを理解する必要があります。
これが私のJavaバージョンです:
$ java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)
Mac OS X 10.9.2 を使用しています。