I implemented the bookmarking collector (BC) 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 I 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):
- Download a clean copy of version 2.4.24 of the Linux Kernel
- Apply the VMComm patch to the kernel
- Build and install the patched kernel
To build BC:
- Install the Jikes RVM 2.3.2 release
- Untar the gzip-ed tarball
rvm.tgz in the rvm
directory
- Untar the gzip-ed tarball
tools.tgz in the
rvm/src/tools directory
- Apply the patch file
tools.patch in
the rvm/src/tools directory
- Untar the gzip-ed tarball
vm.tgz in the
rvm/src/vm directory
- Apply the patch file
vm.patch in
the rvm/src/vm directory
- Untar the gzip-ed tarball
JMTk.tgz in the
rvm/src/vm/memoryManagers/JMTk directory
- Apply the patch file
JMTk.patch in
rvm/src/vm/memoryManagers/JMTk directory
- Set your RVM_BUILD environment, as appropriate
- Type "jconfigure FastAdaptiveGenBC"
- Type "cd $RVM_BUILD;./jbuild"