RFR(S): JDK-8019845 NPG: Memory leak during class redefinition

Daniel D. Daugherty daniel.daugherty at oracle.com
Fri Jul 26 14:04:22 UTC 2013

On 7/26/13 5:50 AM, Coleen Phillmore wrote:
> On 7/26/2013 6:12 AM, frederic parain wrote:
>>>     If the allocate/deallocate subsystem doesn't support partial
>>> deallocates
>>>      then why does deallocate() have a size parameter? If you always
>>> have to
>>>      deallocate() exactly what you allocate()'ed, then deallocate() 
>>> only
>>> needs
>>>      the pointer originally returned by allocate() and doesn't need the
>>> size
>>>      parameter.
>> I'm not familiar enough with Metaspace to answer this questions. I'll
>> let the NPG experts respond to this one.
> We pass the size because the block that is allocated does  not have 
> the size stored in it (to save 1 word of space per allocation).   So 
> you can't just free the pointer.

Isn't there some sanity check info in the non-product version?
Can the allocate() size be saved there and verified at deallocate()
time in non-product mode? I wouldn't be surprised if such a check
revealed other smaller leaks.

The {Redefine,Retransform}BigClass tests are rather abusive in their
hunt for a specific style of memory leak and we were lucky that they
caught this leak also. We're also fortunate that Ivan G. improved
the tests to catch smaller memory leaks.


> Coleen
>> Thanks,
>> Fred 

More information about the hotspot-gc-dev mailing list