RFR: 8020277: Young GC could be extremely slow due to assertion in ObjectStartArray::object_starts_in_range

Stefan Johansson stefan.johansson at oracle.com
Wed Jan 22 11:57:57 UTC 2014


On 2014-01-22 12:45, Stefan Karlsson wrote:
>
> On 2014-01-21 14:17, Stefan Johansson wrote:
>> Hi,
>>
>> Can I have a couple of reviews for this fix for:
>> https://bugs.openjdk.java.net/browse/JDK-8020277
>>
>> Webrev:
>> http://cr.openjdk.java.net/~sjohanss/8020277/webrev.00/
>
> Looks good.
>
> StefanK
>
Thanks a lot Stefan!

StefanJ
>>
>> Summary:
>> There have been a couple of bugs filed about varying/slow gc times 
>> for ParallelScavenge in debug builds. The reason for the slow down is 
>> an assertion in object_starts_in_range() that tries to verify that 
>> the range (mapping to one card) really doesn't have any objects 
>> starting in it. The assertion uses object_start() to find the first 
>> object starting before the end of the range. The reason for this 
>> being really slow is that object_start() won't stop looking for an 
>> object until it finds it, even if it's out of the range we're 
>> currently verifying. So on a heap with many large objects that span 
>> more than one card, a lot of extra work is done.
>>
>> My proposed fix is to just remove this assertion. An alternative 
>> would be to limit the verification to just check the range we are 
>> interested in. I started looking at doing this but realized that such 
>> a limitation would end up being very similar to what is currently 
>> done in object_starts_in_range() and with this in mind I think we can 
>> just remove the assertion. I checked JBS to see if there were many 
>> bugs reported with this assertion as cause, but I only found this bug 
>> and 8009462 which also lists this assertion as the reason for slow GC 
>> times.
>>
>> Testing:
>> * Manually verified that jit/graph/cgt10 doesn't hang anymore.
>>
>> Thanks,
>> Stefan
>




More information about the hotspot-gc-dev mailing list