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

Stefan Karlsson stefan.karlsson at oracle.com
Mon Sep 8 07:50:52 UTC 2014


Looks good.

thanks,
StefanK

On 2014-09-08 09:36, Bengt Rutisson wrote:
>
> 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