RFR (XS): 8025605: G1: Heap expansion logging misleading for fully expanded heap

Thomas Schatzl thomas.schatzl at oracle.com
Mon Sep 30 00:20:16 PDT 2013


Hi,

On Mon, 2013-09-30 at 09:01 +0200, Bengt Rutisson wrote:
> Hi Thomas,
> 
> Thanks for looking at this! Good comments. Here's an updated webrev:
> 
> http://cr.openjdk.java.net/~brutisso/8025605/webrev.01/

  the change looks good now, thanks.

However, as Jesper mentioned, there is an issue with expansion that may
make the change seemingly not work in many cases:
VirtualSpace::expand_by() returns false if the number of bytes we want
to expand is larger than the available number of bytes.

I noticed that behavior in other PSR logs, but could not pinpoint it: g1
did not expand the heap to maximum size, because, I believe now, this
issue.

I.e. the number of requested bytes to expand has been larger than the
uncommitted available memory, so expand_by always returned false
although there would be still enough space left to expand a little.

However I think this should be fixed in an extra CR: I saw some code
paths where heap expansion to the maximum heap size may not really
change the situation (out of memory), e.g. when coming from
expand_and_allocate().

Other places, like the path from humongous_obj_allocate() does take the
situation into account when expansion did not expand enough bytes, but
others like the path from do_collection_pause_at_safepoint() would be
fine.

Thanks,
Thomas





More information about the hotspot-gc-dev mailing list