JEP 189: Shenandoah: An Ultra-Low-Pause-Time Garbage Collector
Mikael Gerdin
mikael.gerdin at oracle.com
Mon Jan 20 16:41:23 UTC 2014
On Monday 20 January 2014 17.31.25 Kirk Pepperdine wrote:
> Hi Andrew,
>
> I don’t have a complete list of activities that safe point but GC is only
> one of them. Code cache maintenance is another, biased locking also can
> cause safe pointing… and there are other activities when the JVM will
> decide to safe point.
I think deoptimization and biased lock revocation are the two main safepoint
operations besides GC.
There's a bunch of other ones, such as PrintThreads and HeapWalk and whatnot,
but I wouldn't do that against a latency-sensitive production environment :)
I agree that in many cases GC pauses dominate the safepoint times, but if you
want to consistently meet a pause time goal you may need to avoid or optimize
other kinds of safepoints as well.
/Mikael
>
> Regards,
> Kirk
>
> On Jan 20, 2014, at 3:32 PM, Andrew Dinn <adinn at redhat.com> wrote:
> > On 20/01/14 14:05, Florian Weimer wrote:
> >> Does your pause time goal only include strictly-GC related pause times,
> >> or other causes for stop-the-world pauses (not all of which are related
> >> to object reachability)?
> >
> > What other causes for stop-the-world pauses are there that are not
> > strictly-GC related?
> >
> > I don't really see that the question needs answering. Clearly, if any
> > such pauses exist in the execution of a given on the JVM independent of
> > the action of the GC and are not to do with the latter's operation then
> > Shenandoah is not going to remove them. The goal of Shenandoah can only
> > be to remove pause times caused by GC.
> >
> > n.b. the goal does not just apply to stop-the-world pauses. Shenandoah
> > should not to stop any individual mutator from making significant
> > progress for longer than 10 msecs. The present target is proposed in
> > terms of 'stop-the-world pauses' because the GC algorithm includes a
> > single stop-the-world pause to scan roots from all thread stacks. This
> > is the expected to be by far the worst case pause for any individual
> > thread. Other pauses imposed on individual threads because of memory
> > management operations ought to be much smaller.
> >
> > A later version of Shenandoah is intended to optimize root scanning to
> > process thread stacks round-robin, i.e. stopping only one thread at a
> > time. This ought to give much smaller worst-case pause times for any
> > given thread.
> >
> > regards,
> >
> >
> > Andrew Dinn
> > -----------
More information about the hotspot-gc-dev
mailing list