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