JVMに引数を渡すことによりJavaヒープ初期値(最小値)とJavaヒープ最大値を設定することが出来ます。
-Xmx 512Mと指定すると最大512MB使用することができます。
-Xms 256Mと指定すると初期値は256MBになります。
これで、Javaヒープは256~512MBになります。ヒープサイズが動的に変わるのはGCを実行してもメモリ割り当てが出来ない場合にヒープ拡張されます。(最大は512MB)
ヒープが縮小されるのは空きスペースが一定の割合を超えた時に起こります。(最小は256MB)