Proxy.isProxyClass scalability

Peter Levart peter.levart at
Fri Apr 19 16:29:00 UTC 2013

Hi Mandy,

I just noticed the following (have been thinking of it already, but then 
forgot) in original code:

  512              * Note that we need not worry about reaping the cache for
  513              * entries with cleared weak references because if a proxy class
  514              * has been garbage collected, its class loader will have been
  515              * garbage collected as well, so the entire cache will be reaped
  516              * from the loaderToCache map.
  517              */

Each ClassLoader maintains explicit hard-references to all Class objects 
for classes defined by the loader. So proxy Class object can not be 
GC-ed until the ClassLoader is GC-ed. So we need not register the 
CacheValue objects in WeakCache with a refQueue. The expunging of 
reverseMap entries is already performed with CacheKey when it is cleared 
and equeued. There's no harm as it is, since the clean-up is performed 
with all the checks and is idempotent, but it need not be done for 
ClassValue objects holding weak references to proxy Class objects.

I'll do that change to WeakCache in next webrev together with any other 
possible changes that might be needed.

Regards, Peter

On 04/19/2013 05:43 PM, Peter Levart wrote:
> On 04/19/2013 04:36 PM, Peter Levart wrote:
> Hi Mandy,
> I changed the copyright header of WeakCache to GPLv2 with ClassPath 
> exception and corrected a minor formatting inconsistency:
> Regards, Peter

More information about the core-libs-dev mailing list