Perf Impact of CMSClassUnloadingEnabled
Jon Masamitsu
jon.masamitsu at oracle.com
Tue Nov 8 09:28:42 PST 2011
On 11/08/11 08:13, Andreas Loew wrote:
> Hi Jon,
>
> many thanks for your reply :-)
>
> The behavior you mention indeed seems a little "unfortunate"... ;-)
> Will this change as part of the efforts to completely remove PermGen
> (part of the "HotRockit" initiative) following the example of JRockit?
It will be the case after perm gen removal that we will readily know if
classes have been unloaded so will be able to conditionally skip the walk of
the Dictionary for purposes of purging dead classes.
Jon
>
> Thanks again & best regards,
>
> Andreas
>
> --
> Andreas Loew
> Senior Java Architect
> Oracle Advanced Customer Services Germany
>
>
> Am 08.11.2011 16:58, schrieb Jon Masamitsu:
>> Andreas,
>>
>> Hotspot maintains a list of classes that are loaded in the
>> Dictionary (dictionary.hpp/cpp). This list does not keep
>> classes alive. After marking (when we know what classes
>> are dead), we walk the list and remove dead classes.
>> Hotspot does not keep information that says classes have
>> not been unloaded, so the list is always walked.
>>
>> Jon
>>
>> On 11/07/11 10:33, Andreas Loew wrote:
>>> Hi Jon,
>>>
>>> sorry, a follow-up question from my side: As it shouldn't be the
>>> most normal thing even for a Java EE app to constantly dereference
>>> classloaders or single classes that need to be GC'ed:
>>>
>>> In how far does your statement about increased remark pauses still
>>> apply in case the PermGen / set of loaded classes has stayed
>>> completely constant between initial mark and remark (which should be
>>> the usual case)?
>>>
>>> And wouldn't there a also be a distinction between PermGen and Old Gen?
>>>
>>> Many thanks & best regards,
>>>
>>> Andreas
>>>
>>> --
>>> Andreas Loew
>>> Senior Java Architect
>>> Oracle Advanced Customer Services Germany
>>>
>>>
>>> Am 07.11.2011 16:44, schrieb Jon Masamitsu:
>>>> Doing class unloading with CMS will often increase the remark pause
>>>> times
>>>> and so is not on by default.
>>>>
>>>> On 11/5/2011 3:29 PM, Martin Hare Robertson wrote:
>>>>> Hi,
>>>>>
>>>>> I recently encountered an interesting GC issue with a Tomcat
>>>>> application. I
>>>>> came up with a simple repro scenario which I posted to StackOverflow:
>>>>> http://stackoverflow.com/questions/8017193/when-does-the-perm-gen-get-collected
>>>>>
>>>>>
>>>>> To solve this issue I have been encouraged to use
>>>>> -XX:+CMSClassUnloadingEnabled.
>>>>> I currently use the following GC configuration.
>>>>>
>>>>> -XX:+UseMembar
>>>>> -XX:+UseConcMarkSweepGC
>>>>> -XX:+UseParNewGC
>>>>> -XX:CMSInitiatingOccupancyFraction=80
>>>>> -XX:+UseCMSInitiatingOccupancyOnly
>>>>>
>>>>> Is enabling CMSClassUnloadingEnabled likely to have a negative
>>>>> perf impact?
>>>>> If not, why is it disabled by default?
>>>>>
>>>>> Thanks
>>>>>
>>>>> Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-gc-use/attachments/20111108/72ec8a46/attachment.html
More information about the hotspot-gc-use
mailing list