Nicole Jagelid

Utvärdering av prestanda hos Java garbage collectors i transaktionsbaserade applikationer med stor heap

Sammanfattning

Den automatiska dynamiska minneshanteringsmetoden känd som 'garbage collection' eller skräpsamlare, är en avgörande del av Java(s) Virtual Machine (JVM) och har betydande inflytande över prestationen hos en aktiv applikation. Java Development Kit 13 (JDK13) erbjuder ett flertal skräpsamlare för systemutvecklare att välja bland. Bland dessa finns Garbage First GC (G1GC), Shenandoah GC och Z Garbage Collector (ZGC). I denna studie undersöks prestandan hos nämnda skräpsamlare i samma miljö. Skräpsamlarna testas på en delmängd av DaCapo Benchmark Suite, och två transaktionsbaserade produktionsapplikationer med stor tillgång till dynamiskt minne (heap). 63GB respektive 256GB. Skräpsamlarna evalueras på flera mätvärden med diverse konfigurationer av skräpsamlaren (extra parameterjusteringar). Reaktivitet (latency) och genomströmning (throughput) är nyckelvärden i denna jämförelsestudie. Resultaten av denna studie visar att en och samma skräpsamlarkonfiguration inte passar alla applikationer. Shenandoah GC och ZGC presterar märkbart bättre reaktivitet jämfört med G1GC, för alla utvärderade applikationer i undersökningen när rätt modifikationsparametrar appliceras. En möjlig förbättring på 80\% av reaktivitetsvärden. Däremot, med hänsyn till genomströmning och exekveringstid, presterar G1GC liknande Shenandoah GC och ZGC. G1GC är också en stabil skräpsamlare i termer av heap användning och är inte lika känslig för överprovisionering av heap, som Shenandoah GC och ZGC är. Denna studie visar också på möjliga prestandafördelar av justeringar av skräpsamlar-parametrar.