Parallel Scavenge: algorithm ParallelOldGC

Dang Nhan Nguyen nhann at
Mon Feb 4 10:48:52 UTC 2013

Hi Jon,

I am asking for the description of the algorithm, especially the compaction part. So far, I can only find part of the description in the source code just like you.
As I've seen in the source code, the compaction part take a region and fill it with data taken from other regions. It different from the some compaction algorithms I have read where they take a region and tried to "compact" its data to else were (e.g LISP2, this:,...). Of course the final resulted heap are (almost) the same, but it is interesting to see any fully description, analysis and evaluation or comparision.

If there is any evaluation of this mark-compaction algorithm against the prior works in term of performance and scalability on multicore computers, it would be even nicer. 

From: hotspot-gc-dev-bounces at [hotspot-gc-dev-bounces at] on behalf of Jon Masamitsu [jon.masamitsu at]
Sent: Saturday, February 02, 2013 12:51 AM
To: hotspot-gc-dev at
Subject: Re: Parallel Scavenge: algorithm ParallelOldGC

Are you asking which hotspot source code is
used when UseParallelOldGC is turned on?
Or are you asking for a description of the
algorithm?  Actually, the answer to both is


I'm not aware of any publications on the specific
algorithm we used.  Comments in the header file
are all I know about.


On 1/30/2013 6:43 AM, Dang Nhan Nguyen wrote:
> Hi all,
> I would like to ask about Parallel Scavenge GC:
> Which parallel mark-compact algorithm is used for the old generation in Parallel Scavenge GC (when XX:+UseParallelOldGC is set)?
> (Reference to publication(s) are appreciated)
> Thanks,
> /Nhan Nguyen

More information about the hotspot-gc-dev mailing list