Verschil in gebruikt, toegewezen en max. Heapgeheugen

1. Overzicht

In dit korte artikel gaan we het verschil zien tussen verschillende metrische gegevens over de geheugengrootte in de JVM.

Eerst zullen we het hebben over hoe adaptieve maatvoering werkt, en vervolgens zullen we het verschil evalueren tussen maximale, gebruikte en vastgelegde maten.

2. Max. Grootte en aanpasbare maatvoering

Twee waarden bepalen de grootte van de JVM-heap: een initiële waarde gespecificeerd via de -Xms vlag en een andere maximale waarde gecontroleerd door de -Xmx tuning vlag.

Als we deze vlaggen niet specificeren, zal de JVM er standaardwaarden voor kiezen. Deze standaardwaarden zijn afhankelijk van het onderliggende besturingssysteem, de hoeveelheid beschikbare RAM en natuurlijk de JVM-implementatie zelf:

Ongeacht de werkelijke grootte en standaardwaarden, begint de heapgrootte met een aanvankelijke grootte. Naarmate we meer objecten toewijzen, kan de heap-grootte groter worden om daaraan tegemoet te komen. De heap-grootte kan echter niet verder gaan dan de maximale heap-grootte.

Simpel gezegd, de maximale heap-grootte is de grootte die is opgegeven via de -Xmx vlag. Ook als we niet expliciet het -Xmxberekent de JVM een standaard maximale grootte.

3. Gebruikte maat

Laten we nu aannemen dat we een paar objecten hebben toegewezen sinds het programma is gestart. De heapgrootte kan een beetje groeien om plaats te bieden aan nieuwe objecten:

De gebruikte ruimte is de hoeveelheid geheugen die momenteel wordt ingenomen door Java-objecten. Het is altijd kleiner dan of gelijk aan de maximale grootte.

4. Toegewijde grootte

De toegewezen grootte is de hoeveelheid geheugen die gegarandeerd beschikbaar is voor gebruik door de virtuele Java-machine. De toegewezen geheugengrootte is altijd groter dan of gelijk aan de gebruikte grootte.

5. Conclusie

In dit korte artikel hebben we het verschil gezien tussen maximale, gebruikte en toegewezen heapgrootte.