Extending OpenJDK with Write-Rationing Garbage Collection




Emerging memory technologies such as phase-change memory (PCM), offer more capacity than the predominant main memory technology, i.e., DRAM. Unfortunately,  PCM wears out over time because of limited write endurance. Prior work proposes to mitigate wear-out by using the language abstration. To this end, recently introduced write-rationing garbage collection (GC) divides the program heap of Java applications into highly written and mostly-read heap regions. A write-rationing GC carefully places highly written and other objects in the appropriate heap region. Existing write-rationing GCs either use dynamic prediction or static profile-based prediction to detect highly written objects. Both techniques have their pros and cons. Write-rationing GC improves PCM lifetime by directing most writes to DRAM in a hybrid memory system consisting of both DRAM and PCM. (Please refer to the background material for more details.)
Unfortunately, existing write-rationing implementations only exist for an academic research virtual machine, namely the Jikes Research Virtual Machine (RVM). The current implementation of write-rationing GC thus limits the broader use of write-rationing GC. Unlike Jikes RVM, OpenJDK can run a variety of Java applications, including Big Data applications such as those written using the Spark framework. In this project, we plan to introduce a write-rationing GC in OpenJDK. We will then investigate whether a broader set of applications also benefit from improved memory lifetime running on top of the hybrid DRAM-PCM system.


The goal of this project is to implement write-rationing garbage collectors in OpenJDK. We expect the student to compare the memory lifetime of a hybrid DRAM-PCM memory system with and without write-rationing GCs.


This research project is implementation-heavy. The student should feel comfortable with modifying a production Java Virtual Machine. We expect the student to install and set up a couple of Big Data applications on an Intel machine.

Background Literature

S. Akram, J.B. Sartor, K.S. McKinley, and L. Eeckhout, "Write-Rationing Garbage Collection for Hybrid Memories," Programming Language Design and Implementation (PLDI), 2018.

S. Akram, J.B. Sartor, K.S. McKinley, and L. Eeckhout, "Crystal Gazer: Profile-Driven Write-Rationing Garbage Collection for Hybrid Memories," ACM International Conference on Measurement and Modeling of Computer Systems (SIGMETRICS), 2019.


This research is advantageous because the student will gain knowledge of emerging memory technologies and how to support them in a widely used language. The student will further learn experimental design in systems research, and analytical modeling of hard-to-measure parameters such as memory wear-out, and performance evaluation. 


Java programming language

Garbage collection

Phase-change memory

Updated:  1 June 2019/Responsible Officer:  Dean, CECS/Page Contact:  CECS Marketing