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

Jon Masamitsu jon.masamitsu at oracle.com
Thu Aug 29 21:48:09 UTC 2013


Have you run any tests where G1 shrinks the heap
down to it's minimum?


On 8/29/13 2:26 AM, Bengt Rutisson wrote:
> 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