RFR: 8056240: Investigate increased GC remark time after class unloading changes in CRM Fuse

Stefan Karlsson stefan.karlsson at oracle.com
Thu Oct 2 10:53:53 UTC 2014


Hi all,

(The following patch changes HotSpot code in areas concerning GC, RT, 
and Compiler. So, it would be good to get reviews from all three teams.)

Please, review this patch to optimize and parallelize the CodeCache part 
of MetadaOnStackMark.

G1 performance measurements showed longer than expected remark times on 
an application using a lot of nmethods and Metadata. The cause for this 
performance regression was the call to 
CodeCache::alive_nmethods_do(nmethod::mark_on_stack); in 
MetadataOnStackMark. This code path is only taken when class 
redefinition is used. Class redefinition is typically used in monitoring 
and diagnostic frameworks.

With this patch we now:
1) Filter out duplicate Metadata* entries instead of storing a Metadata* 
per visited metadata reference.
2) Collect the set of Metadata* entries in parallel. The code 
piggy-backs on the parallel CodeCache cleaning task.

http://cr.openjdk.java.net/~stefank/8056240/webrev.00/
https://bugs.openjdk.java.net/browse/JDK-8056240

Functional testing:
JPRT, Kitchensink, parallel_class_unloading, unit tests

Performance testing:
CRM Fuse - where the regression was found

The patch changes HotSpot code in areas concerning GC, RT, Compiler, and 
Serviceability. It would be good to get some reviews from the other 
teams, and not only from the GC team.

thanks,
StefanK


More information about the hotspot-dev mailing list