RFR(S) 8153843: G1CardLiveDataHelper incorrectly sets next_live_bytes on dead humongous regions

Thomas Schatzl thomas.schatzl at oracle.com
Tue Apr 12 17:14:45 UTC 2016


Hi Derek,

On Tue, 2016-04-12 at 12:40 -0400, Derek White wrote:
> On 4/12/16 8:57 AM, Mikael Gerdin wrote:
> > Hi Derek, Tom 
> > 
> > Are you planning to re-review webrev.1 or can I push this? 
> > 
> > http://cr.openjdk.java.net/~mgerdin/8153843/webrev.1/ 
> > 
> > /Mikael 
> Hi Mikael,
> 
> My only question is about the issue Thomas pointed out and you fixed:
> g1CollectedHeap.cpp, Line 2946.
> 
> I am surprised that "Dead objects cannot be eager reclaim candidates"
> -  I thought they were the perfect eager reclaim candidates. Should
> it be that we simply declare victory and return true at line 2951
> (bypassing the unsafe stuff)?
> 
> Otherwise everything looks fine to me.

  Derek, thanks for making me go over the code again.... I think there
is a remaining issue: in the code when we print the information about
the reclaimed region (with -Xlog:gc+humongous=debug), we implicitly
access the header by calling obj->size() etc in the log messages (e.g.
g1CollectedHeap.cpp:5012).

This needs to be fixed too. Maybe we should just reclaim dead humongous
objects in the cleanup pause already. Or convert them into primitive
arrays or something. Or just fix the log message.

Not sure about the best way to do this.

I would be okay for me to address this in a follow-up, at least this
change will fix the obvious crashes (i.e. as long as not using the log
message).

Thanks,
  Thomas




More information about the hotspot-gc-dev mailing list