RFR: 8027675: Full collections with Serial slower in JDK 8 compared to 7u40
Stefan Johansson
stefan.johansson at oracle.com
Fri Nov 22 01:08:32 PST 2013
Thanks for taking a look at this Coleen,
Please see answers inline.
On 2013-11-21 20:11, Coleen Phillimore wrote:
>
> Stefan,
>
> I think the function MarkSweep::adjust_class_loader() is now unused,
> but I couldn't find where we adjust the class in the CLD walk.
You're correct, MarkSweep::adjust_class_loader() should be removed as
well. Updated webrev:
http://cr.openjdk.java.net/~sjohanss/8027675/webrev.01/
We adjust the classes in phase 3 by calling process_strong_roots with
scanning option SO_AllClasses, this will in
SharedHeap::process_strong_roots lead to calling
ClassLoaderDataGraph::oops_do with the adjust closures.
> There are similar functions in ParallelScavenge - are they also not
> needed? I don't recommend adding this change, just noting it may be
> cleaned up later if so.
We've also looked at this and similar improvements should be possible to
do for the PS old-collections. But as you say that is a separate issue
that needs more investigation as well.
Thanks,
Stefan
>
> This change seems good but I'm not a GC person.
>
> thanks,
> Coleen
>
> On 11/21/2013 11:43 AM, Stefan Johansson wrote:
>> Hi all,
>>
>> Can I have a couple reviews for this fix for:
>> https://bugs.openjdk.java.net/browse/JDK-8027675
>>
>> Webrev:
>> http://cr.openjdk.java.net/~sjohanss/8027675/webrev.00/
>>
>> Summary:
>> When doing permgen removal we had to change the way classes were
>> marked and handled in the GC. When doing this we ended up doing some
>> things a little less efficient than before. The regression is easy to
>> reproduce and when doing a JFR recording we can see that we now spend
>> more time in both the mark and adjust phase.
>>
>> To improve the mark phase:
>> * Enabled the calls to follow_klass to be inlined.
>> * Reduce the extensive amount of calls to follow_class_loader in
>> follow_klass and instead just mark the klass holder (the class loader
>> or the java mirror) for the given klass.
>>
>> To improve the adjust phase:
>> * All calls to adjust_klass have been removed since this is already
>> handled by processing the ClassLoaderDataGraph.
>>
>> Testing:
>> * Manually ran SPECjbb2005 to verify fixing the regression
>> * JPRT for functional sanity testing
>> * Nashorn tests to stress anonymous classes
>>
>> Thanks,
>> StefanJ
>
More information about the hotspot-dev
mailing list