G1 feedback: frantic GC cycles

Tony Printezis tony.printezis at oracle.com
Wed May 4 14:20:53 UTC 2011


FWIW, 518M->517M doesn't necessarily mean that we only filled on region. 
It might mean that we filled, say, 5 but most objects survived. Having 
said that, given how the previous GCs behaved, I think you're right that 
we probably only collected one region. I'm quite perplexed with why we 
went from collecting 256M of young gen to 1M (!!!):

   [ 760M->506M(1024M)]
   [ 507M->506M(1024M)]
   [ 507M->506M(1024M)]
   [ 507M->506M(1024M)]

Simone, you use 1g heap, right? Can you maybe add / set the following 

-Xms1g -Xmx1g -Xmn256m -XX:-UseAdaptiveSizePolicy 

Igor Veresov wrote:
> On 4/30/11 1:38 AM, Simone Bordet wrote:
>> Hi,
>> On Sat, Apr 30, 2011 at 09:04, Igor Veresov<igor.veresov at oracle.com>  
>> wrote:
>>> This is pretty weird. Simone, could you run it with 
>>> -XX:+PrintHeapAtGC, it
>>> would be nice to see how big the survivor spaces are.
>> Ok.
>>> It seems like at the time a collection happens there is only one 
>>> young region.
>> Can I ask how do you know that ? From the logs ?
> Actually I was mistaken it's not always like that, but there one 
> instance. These are the sizes at the end of the four consequent 
> collections:
> [ 518M->517M(1024M)]
> [ 518M->517M(1024M)]
> [ 518M->518M(1024M)]
> [ 519M->518M(1024M)]
> It does look like we've filled about 1M before the next collection 
> happened, which is the default size of a region. PrintHeapAtGC should 
> give more details on how many regions are there in each portion of the 
> heap.
> igor

More information about the hotspot-gc-dev mailing list