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...
Main Author: | |
---|---|
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 |