Pokud použijeme konfiguraci, kde se ms != mx, vstupuje do hry faktor reserved vs commited heap. Nastavíme-li např. ms=1G a mx=8G, pak bude oněch 8G pouze rezervováno (virtuální paměti) a alokován bude pouze 1GB (fyzické paměti). JVM pak bude při provádění GC provádět změny v alokaci fyzické paměti, může např. provést resizing heapu z 1GB na 2GB a alokovat tak další 1GB z oné 8GB rezervace. Takž pak bude mít rezervováno 8GB a 2GB komitováno.
Nevýhody spojené s velkým heapem jsou:
- Nevyužívá optimálně paměť serveru
- Pokud by měl být vyšší, než je fyzická paměť na serveru, dojde samozřejmě k pagingu a řádovému zpomalení odezev systému
Velikost heapu by měla být nastavena zhruba tak, abychom snížili počet full GC cyklů a jejich pauz, aby server "neškytal" :). Pokud máme k dispozici deterministický GC, můžeme jej naladit tak, aby byla frekvence GC co nejnižší a zároveň pauzy co nejkratší.