[ 
https://issues.apache.org/jira/browse/BEANUTILS-291?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12626613#action_12626613
 ] 

Clebert Rezende Suconic commented on BEANUTILS-291:
---------------------------------------------------

> even though in that test there is still a strong reference to the class 

It would be nice someone from JRockit commenting on this. It looks like a bug, 
right?

> Circular Reference on WeakHashMap
> ---------------------------------
>
>                 Key: BEANUTILS-291
>                 URL: https://issues.apache.org/jira/browse/BEANUTILS-291
>             Project: Commons BeanUtils
>          Issue Type: Bug
>          Components: Bean / Property Utils
>    Affects Versions: 1.8.0-BETA
>            Reporter: Niall Pemberton
>            Assignee: Niall Pemberton
>             Fix For: 1.8.0
>
>         Attachments: BEANUTILS-291-FixMemoryLeaks-v2.patch, 
> memoryLeakTests-new.zip, PropertyUtilsBean.java, 
> ThreadIsolationAndTestImprovement2.patch
>
>
> Clebert Suconic wrote on the [EMAIL PROTECTED] list  ....
> (see http://tinyurl.com/2a9gan)
> I have been investigating WeakHashMaps on BeanUtils 1.8 as part of a 
> investigation on this:
> http://jira.jboss.com/jira/browse/JBAS-2299
> (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)
> [EMAIL PROTECTED]
> !--- [EMAIL PROTECTED]
> !--- !--- class sun.reflect.GeneratedConstructorAccessor38
> !--- !--- !--- [Ljava.lang.Object;@10800875
> !--- !--- !--- !--- [EMAIL PROTECTED]
> !--- !--- !--- !--- !--- [EMAIL PROTECTED]
> !--- !--- !--- !--- !--- !--- class sun.reflect.GeneratedConstructorAccessor38
> !--- !--- !--- !--- !--- !--- !--- class java.lang.Class
> !--- !--- !--- !--- !--- !--- !--- !--- [EMAIL PROTECTED]
> !--- !--- !--- !--- !--- !--- !--- !--- !--- [EMAIL PROTECTED]
> !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- [EMAIL PROTECTED]
> !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- [EMAIL PROTECTED]
> !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- 
> [Ljava.util.HashMap$Entry;@28236766
> !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- [EMAIL 
> PROTECTED]
> !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- [EMAIL 
> PROTECTED]
> !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- !--- 
> [EMAIL PROTECTED]
> !--- !--- !--- !--- !--- !--- !--- !--- !-- -!--- !--- !--- !--- !--- !--- 
> !---FieldReference private java.lang.Object [EMAIL PROTECTED] Detail
> 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.
> 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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to