Font Size: a A A

Recoverable Generational Garbage Collector For Java In NVM

Posted on:2020-07-25Degree:MasterType:Thesis
Country:ChinaCandidate:H T LiFull Text:PDF
GTID:2428330623963778Subject:Software engineering major
Abstract/Summary:PDF Full Text Request
Emerging non-volatile memory(NVM)technologies have attractive features like low access latency,non-volatility,and byte-addressability.These features make it possible for NVM to replace dynamic random memory(DRAM)or to work with DRAM in the near future.With the advent of cloud computing and parallel computing,many enterprises have relied on big data processing systems,such as Spark,Hadoop,and Flink,to handle large scale of data efficiently.These systems typically run atop the Java virtual machine and demand fast data storage,leading to systems which add NVM persistence in the Java virtual machine.The overall idea behind those systems is to create a persistent Java heap in NVM that makes Java object data non-volatile.An essential part of the Java virtual machine is the garbage collector.High-level languages such as Java,C#,and Javascript leverage garbage collectors to help users collect dead objects automatically and retain memory safety.Due to the non-volatile nature of NVM,the original garbage collector cannot be directly used in NVM and needs to be modified.Most existing NVM-based garbage collectors are single-generational,that is,persistent objects are collected with a unified garbage collector.While this design simplifies the implementation of garbage collector,it ignores the fact that most objects in Java have a short lifetime while only a small number of objects can remain in the heap for a long time.This work proposes an NVM-based generational Java garbage collector that supports crash recovery.It divides the persistent heap into young generation and old generation and includes two garbage collection strategies:Young GC can collect dead objects in the young generation while Old GC can reclaim all dead objects in the whole heap.It also takes advantage of the non-volatile nature of NVM to ensure no data loss or inconsistency occurs regardless of crashes during garbage collection.The main contributions of this work are three-fold:1.As for Young GC,this work discusses possible inconsistent scenarios and proposes a variety of solutions to enable the Java virtual machine to recover correctly and continue collecting objects even if it crashes unexpectedly during garbage collection.2.As for Old GC,this work relies on the garbage collection mechanism of previous single-generational design and further provides optimizations.It exploits data compression algorithms in different ways by analyzing the characteristics of the metadata and memory distribution in GC to reduce its memory overhead.3.As for the performance of generational garbage collection,evaluation results show that the generational garbage collector proposed in this work has better performance than the single-generational garbage collector in the previous work under the scenario of frequent objects creation and deletion.The proposed metadata compression technique reduces metadata persistence time,space consumption,and recovery time to a large extent.
Keywords/Search Tags:Java virtual machine, Non-volatile memory, Garbage collector
PDF Full Text Request
Related items