Persistent Memory Storage of Cold Regions in the OpenJ9 Java Virtual Machine
University of New Brunswick
In this thesis an optimization technique for object-oriented language runtimes is investigated. The technique takes advantage of infrequently accessed objects, called cold objects, and involves segregating objects into different memory areas by co-locating cold objects in slower memory during garbage collection. This technique is compared against operating system paging mechanisms with swap partitions. Two different schemes for determining which objects should be segregated into slower memory are tested and their results are analyzed. The first scheme uses the slower memory as additional memory, without consideration of access frequency. The second approximates access frequency by marking operating system pages accessed between garbage collections. The OpenJ9 Java virtual machine is modified to support this solution. A new access frequency-aware throughput benchmark, the CloudGC benchmark and the DaCapo benchmark suite are used to compare the different configurations. Through extensive experimental evaluation, it is discovered that each technique can be the most or least optimal choice depending on the benchmark tested.