RFR (S) 8232112: MDO extra_data_lock leaks during class unloading
David Holmes
david.holmes at oracle.com
Thu Oct 17 03:51:30 UTC 2019
On 17/10/2019 12:18 pm, coleen.phillimore at oracle.com wrote:
> On 10/16/19 8:25 PM, David Holmes wrote:
>> Hi Coleen,
>>
>> On 16/10/2019 11:48 pm, coleen.phillimore at oracle.com wrote:
>>> Summary: call the MDO destructor during class unloading.
>>>
>>> Also moved the other C heap deallocation from method_data to
>>> release_C_heap_structures. Methods won't have method_data unless
>>> they're deallocated from the InstanceKlass. The other paths to
>>> deallocate_contents are before the method is called.
>>
>> I'm not understanding why delete is not used to run the destructor and
>> free the memory. Is this memory that is being specially managed?
>
> The _extra_data_lock Mutex is embedded in the MethodData, and MethodData
> is allocated in Metaspace which is deleted en-masse when a class is
> unloaded. It also may be deleted during redefinition, when the
> InstanceKlass is deleted (all old methods are not running).
Okay - thanks for clarifying.
The change seems fine to me.
Thanks,
David
-----
> I actually tested a version where I changed _extra_data_lock to a Mutex*
> and used new/delete for it. This caused a slight degredation in one of
> our performance benchmarks, so I changed it to call the destructor
> explicitly (with Kim's help with syntax).
>
> Thanks,
> Coleen
>>
>> Thanks,
>> David
>>
>>> Tested with tier1 all Oracle platforms, and tier2-6 on linux-x64.
>>>
>>> open webrev at
>>> http://cr.openjdk.java.net/~coleenp/2019/8232112.01/webrev
>>> bug link https://bugs.openjdk.java.net/browse/JDK-8232112
>>>
>>> Thanks,
>>> Coleen
>>>
>>>
>
More information about the hotspot-dev
mailing list