RFR(S) 8153843: G1CardLiveDataHelper incorrectly sets next_live_bytes on dead humongous regions
Thomas Schatzl
thomas.schatzl at oracle.com
Fri Apr 8 18:53:06 UTC 2016
Hi,
On Fri, 2016-04-08 at 12:09 -0400, Tom Benson wrote:
> Hi Mikael,
> It looks like there is an indentation problem at lines 214/215.
> Dumb question: The code now extends the range down to the object
> start, if current region continues_humongous. Do you want to extend
> to the true end region of the object, which might not be the current
> one?
neither "hr" nor "start" are reassigned as they are used for the
actual marking.
Other issues:
- start_region can always use humongous_start_region(). For humongous
starts regions, humongous_start_region() points to itself.
- the change misses that during humongous object registration for
eager reclaim the klass we access to determine the kind of the object
can already be invalid.
I saw some of the crashes were during humongous candidate region
selection. My suggestion on fixing this is to replace
g1CollectedHeap.cpp:~3003 with
bool is_candidate = !g1h->is_obj_dead((oop)(r->bottom())) &&
humongous_region_is_candidate(g1h, r);
These two changes also seem to make JDK-8153834 disappear at least when
running previously failing tests locally too :)
> On 4/8/2016 11:47 AM, Mikael Gerdin wrote:
> > Hi all,
> >
> > Please review this small change to solve an integration blocker in
> > hs-rt which surfaced with the latest integration from main.
> >
> > The problem is that humongous regions are kept around for longer
> > (possibly indefinitely) because the card live data helper
Eager reclaim will catch them, as it only considers reachability.
Thanks,
Thomas
More information about the hotspot-gc-dev
mailing list