RFR: JDK-8025564: gc/memory/UniThread/Linear1 times out during heap verification

Bengt Rutisson bengt.rutisson at oracle.com
Mon Sep 8 07:36:00 UTC 2014


Hi again,

Another update to the webrev. Now with an overflow check for the obj_end 
calculation:
http://cr.openjdk.java.net/~brutisso/8025564/webrev.02/

Bengt

On 2014-09-05 15:25, Bengt Rutisson wrote:
>
> Hi again,
>
> StefanK looked at this and came up with two more things that can be 
> verified. I've added those checks.
>
> Here's an updated webrev:
> http://cr.openjdk.java.net/~brutisso/8025564/webrev.01/
>
> Here's the diff compared to the previous version:
> http://cr.openjdk.java.net/~brutisso/8025564/webrev.00-01.diff/
>
> Thanks, Stefan, for looking at this!
> Bengt
>
> On 2014-09-02 14:50, Bengt Rutisson wrote:
>>
>> Hi all,
>>
>> Can I have some reviews for this fix?
>>
>> http://cr.openjdk.java.net/~brutisso/8025564/webrev.00/
>>
>> https://bugs.openjdk.java.net/browse/JDK-8025564
>>
>> From the bug report:
>>
>> Running the gc/vector/ObjectArrayHigh test with a fastdebug build 
>> takes 9 minutes and 21 seconds on my workstation. A little over 1 
>> minute is spent running the test. The rest of the time (8 minutes) is 
>> spent vefirying the BOT. The reason the BOT verification takes such a 
>> long time is that for each object on the heap G1 looks up the 
>> corresponding value in the BOT and iterates forward to find the same 
>> object again. This can get very expensive since the BOT is lazily 
>> refined and may be in a state where you more or less have to iterate 
>> from the start of each heap region to find the correct object.
>>
>> By replacing this expesive verification with a single pass over the 
>> BOT that just verifies that the BOT has consistent values the 
>> execution time is reduced significantly. With this more explicit BOT 
>> verification the test finishes in 1 minute and 3 seconds on my 
>> workstation.
>>
>> Note that the requirements on the BOT are very relaxed. Basically a 
>> BOT entry can point arbitrarily far back in a HeapRegion as long as 
>> it points to an object. From that object you can then iterate forward 
>> to find the last object that you are interested in. This means that 
>> there are few values that can be considered wrong in the BOT.
>>
>> Thanks,
>> Bengt
>




More information about the hotspot-gc-dev mailing list