Unexplained long stop the world pauses during concurrent marking step in G1 Collector

Thomas Schatzl thomas.schatzl at oracle.com
Tue Sep 2 14:27:37 UTC 2014


Hi Ramki,

On Mon, 2014-09-01 at 23:11 -0700, Srinivas Ramakrishna wrote:
> Hi Thomas --
> 
> 
> Thanks for the test. I think you are right that CMS doesn't yield
> after a partial scan of an array either.
> The dirty card rescan is for the incremental update scanning following
> the initial scan. So, yes, as you state,
> CMS and G1 are probably equally susceptible to this issue.
> 
> 
> Thanks for filing the bug. I am guessing we could have a way by which
> marking state could be remembered in
> the form of resumption point(s) for partially scanned object arrays.
> One technique I vaguely recall
> in CMS was to re-dirty the unscanned part of an object array so that
> the re-dirtied suffix would be picked up and scanned
> at a later time. But perhaps it applied to a different part of the
> scanning.... memory is a bit foggy, and I'm
> just trying to get set up with the code following a longish break.

  another solution for this issue could be, like the full gc marking
phases do, split the array objects into currently processed part and
continuation, and store the continuation in an extra queue.

This would often also solve the problem with the mark stack overflow
too.

Not sure if it is easy to do :)

Thanks,
  Thomas





More information about the hotspot-gc-use mailing list