RFR (S): 8019902: G1: Use the average heap size rather than the minimum heap size to calculate the region size

Bengt Rutisson bengt.rutisson at oracle.com
Thu Aug 29 02:26:52 PDT 2013


Hi everyone,

Could I have a couple of reviews of this change:

http://cr.openjdk.java.net/~brutisso/8019902/webrev.00/

The fact that G1 by default bases its region size on the minimum heap 
size means that out of the box the region size will always be 1M. This 
is a problem on large machines with lots of memory. We pick a large heap 
size but get a very small region size. The small regions are inefficient 
and cause a lot of memory footprint. Normally we aim to get around 2048 
regions, but on a machine with a lot of memory we might pick a default 
max heap size of 32G, which means that we will get ~32000 regions. This 
can lead to out of memory situations - especially on Solaris x86.

This patch changes the heuristics for picking the region size to use the 
average between initial heap size (-Xms) and the maximum heap size 
(-Xmx). This means that for large heaps we will pick larger region 
sizes. In the 32G example we will now pick a region size of 8m which 
means that we will have 4000 regions which is more reasonable.

Thanks,
Bengt


More information about the hotspot-gc-dev mailing list