RFR: Partial GC

Roman Kennke rkennke at redhat.com
Mon Mar 13 22:47:14 UTC 2017

Am 13.03.2017 um 19:33 schrieb Aleksey Shipilev:
> On 03/13/2017 07:30 PM, Roman Kennke wrote:
>> Fixed everything except verification in full-gc. We can't really verify
>> the matrix there because at no point during full-GC does the marking
>> bitmap match the new addresses of objects, and therefore the new matrix.
>> This is why I removed it.
>> http://cr.openjdk.java.net/~rkennke/partialgc/webrev.02/
> Ok then.
>> I found the the C2 matrix math optimization broke matrix updating. In
>> order for partial gc to work correctly we either need to back that out
>> or run without C2.
> I would prefer to push this, and then figure out C2. Matrix stuff is under
> construction anyway, and does not affect default operation.
Have committed+pushed it.

You'll noticed that -Xlog:gc+ergo shows zero regions in collection set
and therefore root set. Without patch "Shenandoah matrix update barriers
should be conditional." you should get a few regions. If you also print
out num_incoming in ShenandoahPartialGC::prepare() you'll see that
without the patch many regions get a fairly low number of regions
(around 10) while with that patch, most are 100 or more, peaking out at
many 100s.

Just to get us on the same page, I'm running like this:

./build/linux-x86_64-normal-server-release/images/jdk/bin/java -Xlog:gc
-Xlog:gc+ergo=debug -XX:ShenandoahGCHeuristics=partial -Xms8g -Xmx8g
-XX:+UseShenandoahGC -XX:ArrayCopyLoadStoreMaxElem=0
-XX:+UseShenandoahMatrix -XX:-UseCompressedOops -jar
jmh-specjvm2016.jar  -f 0


More information about the shenandoah-dev mailing list