Direct Heap Snapshotting in the Java HotSpot VM : a Prototype

The Java programming language is widely used across the world, powering a diverse range of technologies. However, the Java Virtual Machine suffers from long startup time and a large memory footprint. This becomes a problem when Java is used in short-lived programs such as microservices, in which the...

Full description

Bibliographic Details
Main Author: Janiuk, Ludvig
Format: Others
Language:English
Published: KTH, Skolan för elektroteknik och datavetenskap (EECS) 2020
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-287385
id ndltd-UPSALLA1-oai-DiVA.org-kth-287385
record_format oai_dc
spelling ndltd-UPSALLA1-oai-DiVA.org-kth-2873852020-12-11T05:27:48ZDirect Heap Snapshotting in the Java HotSpot VM : a PrototypeengDirekt Heap-Snapshottande i Java HotSpot's VM : en PrototypJaniuk, LudvigKTH, Skolan för elektroteknik och datavetenskap (EECS)2020Computer SciencesDatavetenskap (datalogi)The Java programming language is widely used across the world, powering a diverse range of technologies. However, the Java Virtual Machine suffers from long startup time and a large memory footprint. This becomes a problem when Java is used in short-lived programs such as microservices, in which the long initialization time might dominate the program runtime and even violate service level agreements. Checkpoint/Restore (C/R) is a technique which has reduced startup times for other applications, as well as reduced memory footprint. This thesis presents a prototype of a variant of C/R on the OpenJDK JVM, which saves a snapshot of the Java heap at some time during initialization. The primary goal was to see whether this was possible. The implementation successfully skips parts of initialization and the resulting program still seems to execute correctly under unit tests and test programs. It also reduces runtime by a minuscule amount under certain conditions. The portion of initialization being snapshotted would need to be further extended in order to result in larger time savings, which is a promising avenue for future work. Programmeringsspråket Java används i hela världen, och driver en bred mängd olika teknologier. Javas 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änstens 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. Student thesisinfo:eu-repo/semantics/bachelorThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-287385TRITA-EECS-EX ; 2020:797application/pdfinfo:eu-repo/semantics/openAccess
collection NDLTD
language English
format Others
sources NDLTD
topic Computer Sciences
Datavetenskap (datalogi)
spellingShingle Computer Sciences
Datavetenskap (datalogi)
Janiuk, Ludvig
Direct Heap Snapshotting in the Java HotSpot VM : a Prototype
description The Java programming language is widely used across the world, powering a diverse range of technologies. However, the Java Virtual Machine suffers from long startup time and a large memory footprint. This becomes a problem when Java is used in short-lived programs such as microservices, in which the long initialization time might dominate the program runtime and even violate service level agreements. Checkpoint/Restore (C/R) is a technique which has reduced startup times for other applications, as well as reduced memory footprint. This thesis presents a prototype of a variant of C/R on the OpenJDK JVM, which saves a snapshot of the Java heap at some time during initialization. The primary goal was to see whether this was possible. The implementation successfully skips parts of initialization and the resulting program still seems to execute correctly under unit tests and test programs. It also reduces runtime by a minuscule amount under certain conditions. The portion of initialization being snapshotted would need to be further extended in order to result in larger time savings, which is a promising avenue for future work. === Programmeringsspråket Java används i hela världen, och driver en bred mängd olika teknologier. Javas 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änstens 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.
author Janiuk, Ludvig
author_facet Janiuk, Ludvig
author_sort Janiuk, Ludvig
title Direct Heap Snapshotting in the Java HotSpot VM : a Prototype
title_short Direct Heap Snapshotting in the Java HotSpot VM : a Prototype
title_full Direct Heap Snapshotting in the Java HotSpot VM : a Prototype
title_fullStr Direct Heap Snapshotting in the Java HotSpot VM : a Prototype
title_full_unstemmed Direct Heap Snapshotting in the Java HotSpot VM : a Prototype
title_sort direct heap snapshotting in the java hotspot vm : a prototype
publisher KTH, Skolan för elektroteknik och datavetenskap (EECS)
publishDate 2020
url http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-287385
work_keys_str_mv AT janiukludvig directheapsnapshottinginthejavahotspotvmaprototype
AT janiukludvig direktheapsnapshottandeijavahotspotsvmenprototyp
_version_ 1719370054894616576