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

Bengt Rutisson bengt.rutisson at oracle.com
Tue Sep 2 12:50:52 UTC 2014


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