-Xms パラメーターと -Xmx パラメーターは、それぞれ最小ヒープ サイズと最大ヒープ サイズを定義します。
世代がいっぱいになると GC が発生するため、スループットは使用可能なメモリの量に反比例します。
デフォルトでは、JVM は各 GC でヒープを拡大または縮小して、各コレクションで生きているオブジェクトに対する空き領域の割合を特定の範囲内に維持しようとします。この範囲は、パラメーター -XX:MinHeapFreeRatio=minimum および -XX:MaxHeapFreeRatio=maximum によってパーセンテージとして設定されます。および -Xms と -Xmx によって制限される合計サイズ。
Glassfish のチューニング用に Oracle サイトで利用できる Java ヒープ サイズのガイドラインがいくつかありますが、どの JVM にも当てはまります。
http://docs.oracle.com/cd/E18930_01/html/821-2431/abeic.html#abeij
IBM のトラブルシューティング ガイドでは、最小ヒープ使用量を約 40%、最大ヒープ使用量を約 70% とするアプリケーション固有のヒープ使用量を目標とすることを推奨しています。
http://publib.boulder.ibm.com/infocenter/javasdk/tools/index.jsp?topic=%2Fcom.ibm.java.doc.igaa%2F_1vg000139b8b453-11951f1e7ff-8000_1001.html
最大値が低いほど、VM はより効率的にメモリを管理しますか?
おそらく、ヒープ サイズのオブジェクトを過剰に割り当てないことで、より正確に正しいメモリ ジェネレーションに「記入」されます。これは、ヒープ サイズが大きいほど GC が実行されにくくなるためです。つまり、より多くのオブジェクトが若い世代に長く留まり、より高速なガベージ コレクションが提供されます。メモリ使用量を 2 倍にする代償。
追加のオーバーヘッドは見られませんが、アプリケーションがメモリ不足の原因であり、最大メモリ割り当てが高いことが原因であり、メモリに大きなオブジェクトが格納されているか、メモリリークが発生している可能性が最も高いです。ヒープ管理よりも差し迫った問題であるアプリケーション。
http://docs.oracle.com/javame/config/cdc/cdc-opt-impl/ojmeec/1.1/custom/html/tuning.htm