Ludvig Janiuk

Direkt Heap-Snapshottande i Java HotSpot's VM: en Prototyp

Sammanfattning

Programmeringsspråket Java används i hela världen, och driver en bred mängd olika teknologier. Java's Virtuella Maskin lider däremot av en lång uppstartstid och ett stort minnesavtryck. Detta blir ett problem när Java används för kortlivade program liksom microservices, i vilka den långa initialiseringstiden kan komma att dominera programmets körtid, och till och med bryta avtal om tjänstans tillgänglighet. Checkpoint/Restore (C/R) är en teknologi som har minskat uppstartstid samt minnesavtryck för andra applikationer. Detta arbete presenterar en prototyp där en variant av C/R applicerats på OpenJDK JVM, och sparar undan en kopia av Java-heapen vid en specifik tidspunkt under initialiseringen. Det främsta målet har varit att undersöka om detta är möjligt. Implementationen lyckas med framgång hoppa över delar av initialiseringen och det resulterande programmet verkar fortfarande exekvera korrekt under enhetstester och testprogram. Implementationen minskar också uppstartstid med en väldigt liten bråkdel under vissa omständigheter. För att spara mera tid skulle perioden som hoppas över med hjälp av snapshottet behöva vara större, vilket är en lovande riktning för framtida arbete.