Különbség a használt, elkötelezett és a maximális kupac memóriában

1. Áttekintés

Ebben a rövid cikkben megnézzük a különbséget a JVM különböző memóriaméret mutatói között.

Először beszélünk az adaptív méretezés működéséről, majd értékelni fogjuk a különbséget a max, a használt és az elkötelezett méret között.

2. Maximális méret és adaptív méretezés

Két érték szabályozza a JVM halom méretét: egy kezdeti érték, amelyet a -Xms zászló és egy másik maximális érték, amelyet a -Xmx tuning zászló.

Ha nem adjuk meg ezeket a jelzőket, akkor a JVM kiválasztja az alapértelmezett értékeket. Ezek az alapértelmezett értékek az alapul szolgáló operációs rendszertől, a rendelkezésre álló RAM mennyiségétől és természetesen magától a JVM megvalósítástól függenek:

A tényleges mérettől és az alapértelmezett értékektől függetlenül a kupacméret kezdeti mérettel kezdődik. Amint több objektumot osztunk ki, a kupac mérete megnőhet, hogy ezt befogadja. A kupac mérete azonban nem haladhatja meg a maximális kupac méretet.

Leegyszerűsítve: a halom maximális mérete a -Xmx zászló. Továbbá, ha nem határozzuk meg kifejezetten a -Xmx, a JVM kiszámítja az alapértelmezett maximális méretet.

3. Használt méret

Tegyük fel, hogy a program elindítása óta kiosztottunk néhány objektumot. A kupac mérete kissé megnőhet, hogy új objektumokat befogadjon:

A felhasznált terület az a memóriamennyiség, amelyet jelenleg a Java objektumok foglalnak el. Mindig kisebb vagy egyenlő a maximális méretnél.

4. Elkötelezett méret

A lekötött méret az a memóriamennyiség, amely garantáltan rendelkezésre áll a Java virtuális gép számára. Az elkötelezett memória mérete mindig nagyobb vagy egyenlő a használt mérettel.

5. Következtetés

Ebben a rövid cikkben láttuk a különbséget a max, a használt és az elkötelezett kupacméret között.