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