The bookmarking collector (BC) is implemented in the Jikes RVM/MMTk (version 2.3.2). When memory pressure is low, BC matches or beats the performance of the next best collector we tested, GenMS. By cooperating with the VM when memory pressure increases, BC executes up to 5x faster than the next best collector and up to 41x faster than GenMS. You can read more about this collector in a paper presented at PLDI 2005 titled Garbage Collection Without Paging.

To patch the Linux kernel (extends the virtual memory manager to provide the memory pressure signals BC uses):

  1. Download a clean copy of version 2.4.24 of the Linux Kernel
  2. Apply the VMComm patch to the kernel
  3. Build and install the patched kernel

To build BC:

  1. Install the Jikes RVM 2.3.2 release
  2. Untar the gzip-ed tarball rvm.tgz in the rvm directory
  3. Untar the gzip-ed tarball tools.tgz in the rvm/src/tools directory
  4. Apply the patch file tools.patch in the rvm/src/tools directory
  5. Untar the gzip-ed tarball vm.tgz in the rvm/src/vm directory
  6. Apply the patch file vm.patch in the rvm/src/vm directory
  7. Untar the gzip-ed tarball JMTk.tgz in the rvm/src/vm/memoryManagers/JMTk directory
  8. Apply the patch file JMTk.patch in rvm/src/vm/memoryManagers/JMTk directory
  9. Set your RVM_BUILD environment, as appropriate
  10. Type "jconfigure FastAdaptiveGenBC"
  11. Type "cd $RVM_BUILD;./jbuild"
This material is based upon work supported by the National Science Foundation under Grant No. CNS-0347339 (CAREER). Any opinions, findings and conclusions or recomendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation (NSF).