Hi, I submited a patch to enable parallel compaction of GCv5. It now works in Windows. Please don't expect any performance improvement yet since I care only about the framework at the moment. And it's not a full parallel compactor because not all phases are parallelized, but that would be easier. Hopefully the experience gained during the development can help in more advanced parallel compaction implementations.
The description of the patch is following: URL: http://issues.apache.org/jira/browse/HARMONY-2101 This is a patch that makes the GCv5 work in multiple collector threads. This patch has mainly following work: 1. It makes the marking phase and installing forwarding-pointer phase parallel. The marking phase lets multiple collectors share a task pool for load balance. The installing forwarding-pointer phase is an improvement over SUN's parallel compator. It enables all the objects be compacted to lower address space without a few piles of compacted objects. The remaining phase in compaction is to move object. It's not yet put in the patch, but it's trivial since the difficulty is in prior phases. 2. Data structures/utilities the support a prallel collection. In this patch, I put a synchronized stack and a synchronized queue implementations. Both are non-blocking. The queue is based on Michael and Scott's algorithm. Some other data structures like vector and pool are also implemented. The parallel compaction heavily depends on these data structures and utilities for both correctness and performance. 3. It also has added the code for command line options for number of collector threads and to switch between generational/non-generational mode. -Dgc.gen_mode=true/false -Dgc.num_collectors=2 Note, with this patch, the generational mode is broken. The focus is for parallel. Hopefully next version will have a full parallel compactor. Once the parallel compaction is done, I will get back the generational mode since it is relatively much easier then. The default is non-gen mode and two collector threads. Thanks, xiaofeng