RFR: 8058963: CollectorPolicy::satisfy_failed_metadata_allocation can avoid some safepoints

Mikael Gerdin mikael.gerdin at oracle.com
Mon Sep 29 08:45:32 UTC 2014


On Monday 29 September 2014 10.14.33 Bengt Rutisson wrote:
> On 2014-09-26 16:45, Erik Helin wrote:
> > Hi Bengt,
> > 
> > On 2014-09-26 12:49, Bengt Rutisson wrote:
> >> Hi Erik,
> >> 
> >> The change looks good.
> > 
> > thanks!
> > 
> > On 2014-09-26 12:49, Bengt Rutisson wrote:
> >> One minor thing is that Metaspace::expand_and_allocate() and
> >> Metaspace::allocate() have different exposure even though they are both
> >> supposed to be internal to Metaspace. It would be nice to treat them the
> >> same way. Talked to Erik and we think that keeping the friend
> >> declaration of CollectorPolicy makes sense and in that case we can move
> >> expand_and_allocate() from being public to being private.
> > 
> > Good idea, I've uploaded new webrevs:
> > - full: http://cr.openjdk.java.net/~ehelin/8058963/webrev.01/
> > - inc: http://cr.openjdk.java.net/~ehelin/8058963/webrev.00-01/
> 
> Looks good.

+1

/Mikael

> 
> Bengt
> 
> > Thanks,
> > Erik
> > 
> >> Thanks,
> >> Bengt
> >> 
> >> On 2014-09-23 17:15, Erik Helin wrote:
> >>> Hi all,
> >>> 
> >>> this small change enables us to skip two possible safepoints in
> >>> CollectorPolicy::satisfy_failed_metadata_allocation:
> >>> 
> >>> 1. When a thread continues a loop after having been stalled due to a
> >>> GC_locker initiated Full GC.
> >>> 2. When the VM_CollectForMetadata VM operation's prologue fails
> >>> because a full GC has already been run just prior to the
> >>> CollectForMetadata VM operation.
> >>> 
> >>> The way this is done is simply by trying to allocate at the start of
> >>> the loop. This way, whenever we loop around and a full GC has
> >>> happened, the allocation request might be satisfied and we can do an
> >>> early return.
> >>> 
> >>> Webrev:
> >>> http://cr.openjdk.java.net/~ehelin/8058963/webrev.00/
> >>> 
> >>> Bug:
> >>> https://bugs.openjdk.java.net/browse/JDK-8058963
> >>> 
> >>> Testing:
> >>> - JPRT
> >>> 
> >>> - Aurora:
> >>>   - Kitchensink
> >>>   - Weblogic+Medrec
> >>>   - runThese
> >>>   - vm.quick, regression, gc, compiler, runtime, parallel class
> >>> 
> >>> loading,
> >>> 
> >>>     metaspace, oom
> >>>   
> >>>   - JTReg tests
> >>> 
> >>> Thanks,
> >>> Erik




More information about the hotspot-gc-dev mailing list