[ 
https://issues.apache.org/jira/browse/CXF-2689?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Kulp resolved CXF-2689.
------------------------------

       Resolution: Fixed
    Fix Version/s: 2.3.0
                   2.2.11


This was apparently resolved in JAXB 2.1.13 as they made the saving of that 
property in the thread local require a property to be set and it's not on by 
default.



> Classloader not GC'ed after undeploying the applications. Reference from 
> SingleElementLeafProperty
> --------------------------------------------------------------------------------------------------
>
>                 Key: CXF-2689
>                 URL: https://issues.apache.org/jira/browse/CXF-2689
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 2.2.6
>         Environment: Windows XP / Solaris 10
> JBoss 5.1.0.GA
>            Reporter: Danny Blazejczak
>             Fix For: 2.2.11, 2.3.0
>
>
> I found that after undeploying my applications from JBoss 5.1.0.GA the 
> classloaders remain hanging and are never garbage collected. These are the 
> items I have tried so far:
> - JVM options : -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled 
> -XX:+CMSClassUnloadingEnabled  
>   These make that the permgen gets collected periodically.
> - I have verified that after several redeployments there is indeed the 
> PermGen OOM error.
> The applications consist of a war package, containing the JSP frontend. and 
> an EAR containing all the backend services (it includes CXF 2.2.6 and JAXB 
> 2.1.12 within the EAR). I use CXF as a jaxws:client:
> Analyzing a memory dump several minutes after undeployment, and after 
> manually triggering GC, I extracted this with Eclipse MAT. 
> It contains the "Path to GC (Excluding all weak, soft and phantom 
> references)":
> Class Name                                                                    
>                           | Shallow Heap | Retained Heap 
> ---------------------------------------------------------------------------------------------------------------------------------------
> org.jboss.classloader.spi.base.BaseClassLoader @ 0xdf9e538                    
>                           |           96 |    10,484,208 
> '- <classloader> class 
> com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty @ 0x2711fde0   
>    |            8 |             8 
>    |- <class> com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty 
> @ 0xeeb0140                |           40 |         1,336 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0x10173b88        
>                           |           32 |            32 
>    |  |  '- [39] java.lang.ThreadLocal$ThreadLocalMap$Entry[128] @ 0xf7ca2f8  
>                           |          528 |        23,240 
>    |  |     '- table java.lang.ThreadLocal$ThreadLocalMap @ 0xf6647a8         
>                           |           24 |        23,264 
>    |  |        '- threadLocals java.lang.Thread @ 0xf4856c0  
> http-127.0.0.1-8080-14 Native Stack, Thread|          104 |        23,928 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0x101d8f98        
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0x101d9240        
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0x101e8df0        
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0x103c01f8        
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0x104c1b20        
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0x10567780        
>                           |           32 |            32 
>    |  '- Total: 7 entries                                                     
>                           |              |               
>    |- <class> com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty 
> @ 0xed70788                |           40 |         1,280 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xf8dcc78         
>                           |           32 |            32 
>    |  |  '- [9] java.lang.ThreadLocal$ThreadLocalMap$Entry[128] @ 0xf7bca90   
>                           |          528 |        22,520 
>    |  |     '- table java.lang.ThreadLocal$ThreadLocalMap @ 0xf515ca8         
>                           |           24 |        22,544 
>    |  |        '- threadLocals java.lang.Thread @ 0xf35e078  
> http-127.0.0.1-8080-8 Native Stack, Thread |          104 |        23,208 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xf8dcd18         
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xf8e7628         
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xfd624d0         
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xfd6d480         
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xfd77710         
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xfd96740         
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xfd9d5c0         
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xff51780         
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0x10145a28        
>                           |           32 |            32 
>    |  |- value java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0x106537c8        
>                           |           32 |            32 
>    |  '- Total: 11 entries                                                    
>                           |              |               
>    '- Total: 2 entries                                                        
>                           |              |               
> ---------------------------------------------------------------------------------------------------------------------------------------
> It shows the SingleElementLeafProperty from JAXBImpl holding references to 
> the classloader (of the EAR packaged application). the instance 
> SingleElementLeafProperty  contains a fieldName which holds one of the 
> parameter names of the invoked operation.
> When I open a JPDA debug session to JBoss and suspend the Threads, I found 
> indeed they included hard references to the SingleElementLeafProperty. This 
> is a dump of the variables in the suspended Thread threadLocals:
> [25]  ThreadLocal$ThreadLocalMap$Entry  (id=229)      
>       discovered      null    
>       next    ThreadLocal$ThreadLocalMap$Entry  (id=229)      
>       queue   ReferenceQueue$Null  (id=215)   
>       referent        null    
>       value   SingleElementLeafProperty<BeanT>  (id=239)      
>               acc     AdaptedAccessor<BeanT,InMemValueT,OnWireValueT>  
> (id=240)       
>               defaultValue    null    
>               fieldName       "msisdn" (id=244)       
>               nillable        false   
>               propertyInfo    null    
>               tagName Name  (id=245)  
>               xacc    
> TransducedAccessor$CompositeTransducedAccessorImpl<BeanT,ValueT>  (id=247)    
>   
>                       acc     AdaptedAccessor<BeanT,InMemValueT,OnWireValueT> 
>  (id=240)       
>                               adapter Class<T> 
> (javax.xml.bind.annotation.adapters.NormalizedStringAdapter) (id=253)  
>                                       annotations     null    
>                                       annotationType  null    
>                                       cachedConstructor       null    
>                                       classRedefinedCount     0       
>                                       declaredAnnotations     null    
>                                       declaredConstructors    
> SoftReference<T>  (id=349)      
>                                       declaredFields  null    
>                                       declaredMethods null    
>                                       declaredPublicFields    null    
>                                       declaredPublicMethods   null    
>                                       enumConstantDirectory   null    
>                                       enumConstants   null    
>                                       genericInfo     ClassRepository  
> (id=279)       
>                                       lastRedefinedCount      0       
>                                       name    
> "javax.xml.bind.annotation.adapters.NormalizedStringAdapter" (id=283)   
>                                       newInstanceCallerCache  null    
>                                       publicConstructors      null    
>                                       publicFields    null    
>                                       publicMethods   null    
>                               core    Accessor$FieldReflection<BeanT,ValueT>  
> (id=254)        
>                                       f       Field  (id=294) 
>                                               annotations     byte[20]  
> (id=298)      
>                                               clazz   Class<T> 
> (com.al.apc.generated.services.customeraccount.BaseAccountRequest) (id=300)   
>  
>                                               declaredAnnotations     
> LinkedHashMap<K,V>  (id=301)    
>                                               fieldAccessor   null    
>                                               genericInfo     null    
>                                               modifiers       4       
>                                               name    "msisdn" (id=244)       
>                                               override        true    
>                                               overrideFieldAccessor   
> UnsafeObjectFieldAccessorImpl  (id=303) 
>                                               root    Field  (id=305) 
>                                               securityCheckCache      null    
>                                               securityCheckTargetClassCache   
> null    
>                                               signature       null    
>                                               slot    7       
>                                               type    Class<T> 
> (java.lang.String) (id=209)    
>                                       valueType       Class<T> 
> (java.lang.String) (id=209)    
>                               staticAdapter   null    
>                               valueType       Class<T> (java.lang.String) 
> (id=209)    
>                       xducer  RuntimeBuiltinLeafInfoImpl$1  (id=260)  
> I have seen an old bug reference CXF-457 which clears the threadlocal at the 
> end of invoke() method in JaxWsMethodInvoker.  The proxy used in my case is 
> JaxWsClientProxy. I found that after the method invocation the response is 
> cleared from the threadlocals, but several parameter names remain there.
> I think my setup is OK. We passed a lot of tests, including 3M successful 
> generated (test)load transactions.
> Any suggestions?
> Kind Regards,
> Danny

-- 
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