Forskel i brugt, forpligtet og maksimal hukommelse

1. Oversigt

I denne korte artikel vil vi se forskellen mellem forskellige hukommelsesstørrelsesmålinger i JVM.

Først vil vi tale om, hvordan adaptiv dimensionering fungerer, og derefter evaluere vi forskellen mellem maks, brugt og engageret størrelse.

2. Maksimal størrelse og adaptiv størrelse

To værdier styrer størrelsen på JVM-bunken: en startværdi specificeret via -Xms flag og en anden maksimal værdi kontrolleret af -Xmx tuning flag.

Hvis vi ikke angiver disse flag, vælger JVM standardværdier for dem. Disse standardværdier afhænger af det underliggende operativsystem, mængden af ​​tilgængelig RAM og selvfølgelig selve JVM-implementeringen:

Uanset den faktiske størrelse og standardværdier starter bunkestørrelsen med en indledende størrelse. Når vi tildeler flere objekter, kan bunkestørrelsen vokse for at imødekomme det. Bunestørrelsen kan dog ikke gå ud over den maksimale bunkestørrelse.

Enkelt sagt, den maksimale dyngestørrelse er den størrelse, der er angivet via -Xmx flag. Også når vi ikke udtrykkeligt angiver -Xmx, JVM beregner en standard maksimal størrelse.

3. Brugt størrelse

Lad os antage, at vi tildelte et par objekter, siden programmet startede. Haugestørrelsen kan vokse lidt for at rumme nye objekter:

Det anvendte rum er den mængde hukommelse, der i øjeblikket optages af Java-objekter. Det er altid mindre end eller lig med den maksimale størrelse.

4. Forpligtet størrelse

Den forpligtede størrelse er den mængde hukommelse, der garanteres at være tilgængelig til brug af den virtuelle Java-maskine. Den dedikerede hukommelsesstørrelse er altid større end eller lig med den anvendte størrelse.

5. Konklusion

I denne korte artikel så vi forskellen mellem maks, brugt og engageret dyngestørrelse.


$config[zx-auto] not found$config[zx-overlay] not found