commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Niall Pemberton" <niall.pember...@gmail.com>
Subject Re: Circular Reference on WeakHashMap
Date Tue, 07 Aug 2007 00:51:58 GMT
On 8/6/07, Clebert Suconic <csuconic@redhat.com> wrote:
> I have been investigating WeakHashMaps on BeanUtils 1.8 as part of a
> investigation on this:
>
> http://jira.jboss.com/jira/browse/JBAS-2299

Thanks for getting back to us so quickly.

> (Which is not actually an issue with JBAS, but an issue when using
> BeanUtils as part of the classPath).
>
> There is a circular reference on the WeakHashMap, The WeakHashMap will
> have the ClassLoader as the key, and it will have a reference back to
> the Key from one of the Reflection objects. This doesn't work! (Please..
> no discussions about this point.. if you don't believe me, do some
> testing with simple stuff before discussing this and come back to me
> only after that)

OK I will.

> org.jboss.web.tomcat.service.WebAppClassLoader@16334564
> !--- sun.reflect.DelegatingClassLoader@27651708
> !--- !--- class sun.reflect.GeneratedConstructorAccessor38
> !--- !--- !--- [Ljava.lang.Object;@10800875
> !--- !--- !--- !--- java.util.Vector@838806
> !--- !--- !--- !--- !--- sun.reflect.DelegatingClassLoader@27651708
> !--- !--- !--- !--- !--- !--- class
> sun.reflect.GeneratedConstructorAccessor38
> !--- !--- !--- !--- !--- !--- !--- class java.lang.Class
> !--- !--- !--- !--- !--- !--- !--- !---
> org.apache.commons.beanutils.converters.ClassConverter@22616909
> !--- !--- !--- !--- !--- !--- !--- !--- !---
> org.apache.commons.beanutils.converters.ArrayConverter@18888821
> !--- !--- !--- !--- !--- !--- !--- !--- !--- !---
> org.apache.commons.beanutils.converters.ConverterFacade@13619754
> !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !---
> java.util.HashMap$Entry@32434103
> !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !---
> [Ljava.util.HashMap$Entry;@28236766
> !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !---
> java.util.HashMap@14997495
> !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !---
> org.apache.commons.beanutils.ConvertUtilsBean@2016953
> !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !---
> !--- org.apache.commons.beanutils.BeanUtilsBean@30487951
> !---!---!---!---!---!---!---!---!---!---!---!---!---!---!---!---
> FieldReference private java.lang.Object
> java.util.WeakHashMap$Entry.value=java.util.WeakHashMap$Entry@23775534
> Detail

I'm not familiar with JBoss's JVMTIInterface or its output - and it
seems to be somewhat messed up in posting here - so I've (hopefully)
cleaned it up and re-posted in a Jira ticket I've opened for this
here:

https://issues.apache.org/jira/browse/BEANUTILS-291

> I don't know if I'm preaching to the choir, but just in case this is new
> information to someone... you should aways keep Reflection referenced as
> SoftReferences (if you really have to). Reflection is aways a new object
> so a WeakReference is too weak.

Preach away - I have no great knowledge of this stuff.

> On JBossSerialization I have solved this using an interesting way. I
> called it PersistentReference. I'm using SoftReferences, and keeping the
> information to recreate it case the SoftReference is cleared:
>
> http://fisheye.jboss.org/browse/JBoss/jboss-serialization/src/org/jboss/serial/references/PersistentReference.java?r=1.3
>
>
> And also... you guys should write a testcase to validate if the Caching
> is being cleared. (I don't know if you have one).
>
> http://anonsvn.jboss.org/repos/jbossserialization/trunk/tests/org/jboss/serial/memory/MemoryLeakTestCase.java
>
> You don't need to use the jboss-profiler API for this.. just create a
> WeakReference to a new ClassLoader, and validate if it was released at
> the end after some exercizing some code on this caching. You will
> probably need to fill your memory almost to 100% on the test as
> SoftReference are only gone when the memory is low.

Unfortunately I'm away on holiday soon for 3 weeks (12th August to 2nd
September) - so unless someone else picks this up - ii don't have time
to look at this until after that. Do you mind if we move the
discussion over to that Jira ticket I opened though?

Niall

> Clebert Suconic

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message