GSoC/GCI Archive
Google Summer of Code 2010

Jikes RVM

Web Page:

Mailing List:

Jikes RVM (Research Virtual Machine) provides a flexible open testbed to prototype virtual machine technologies and experiment with a large variety of design alternatives. It differs from other JVM projects in that it is written in Java whilst having a full adaptive optimization framework. It is a vehicle for testing a wide range of ideas including compiler research, memory management research, Java operating systems, computer architecture, and aspect oriented programming to name a few. It is widely used for research and teaching; for example, over 180 research papers have been published which use Jikes RVM.


  • Implement a On-the-fly Copying Garbage Collector for JikesRVM JikesRVM a Java virtual machine written in Java uses the Memory Management Toolkit (MMTk) to provide a wide variety of garbage collectors. Currently MMTk only provides support for Stop The World (STW) garbage collection. This project will implement an existing concurrent copying GC algorithm in MMTk and JikesRVM as a proof of concept and to provide future GC researchers with a basis for comparisons.
  • Implementing the Compressor Algorithm (RVM-401) The goal of the project is to implement the Compressor heap compaction algorithm as described in the article "The Compressor: concurrent, incremental, and parallel compaction". The article suggests a novel algorithm to eliminate memory fragmentation in long-running applications while reducing the pause time of the application. The compressor required only one heap pass to perform compaction.
  • Improved register allocator for x86 and x86_64 The current Linear Scan register allocation algorithm is efficient and simple in implementation. It is a good approach for JIT and dynamic compilers. The algorithm assumes large and rich register sets architecture but this assumption can result in degraded performance on architectures with fewer available register sets. The goal of project is to study and provide modification to linear scan algorithm with assumption that registers are limited and fewer in number.