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