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.