RFR: 8027675: Full collections with Serial slower in JDK 8 compared to 7u40
Coleen Phillimore
coleen.phillimore at oracle.com
Fri Nov 22 07:46:16 PST 2013
On 11/22/2013 4:08 AM, Stefan Johansson wrote:
> Thanks for taking a look at this Coleen,
This looks good to me also. Thanks to the GC reviewers.
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