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

Kevan Miller reassigned GERONIMO-4869:
--------------------------------------

    Assignee: Kevan Miller

> InheritableThreadLocal causing ClassLoader memory leak in TransactionTimer 
> thread
> ---------------------------------------------------------------------------------
>
>                 Key: GERONIMO-4869
>                 URL: https://issues.apache.org/jira/browse/GERONIMO-4869
>             Project: Geronimo
>          Issue Type: Bug
>      Security Level: public(Regular issues) 
>    Affects Versions: 2.1.4
>            Reporter: Kevan Miller
>            Assignee: Kevan Miller
>             Fix For: 2.1.5, 2.2
>
>
> Another problem i saw in the .hprof data provided by Ghostknife was caused by 
> a threadlocal in the o.a.g.transaction.manager.TransactionTimer$CurrentTime 
> thread
> {code}
> Class Name                                                                    
>                                                                               
>                                  | Shallow Heap | Retained Heap 
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> classLoader org.apache.geronimo.naming.reference.PersistenceContextReference 
> @ 0xac810698                                                                  
>                                   |           48 |         1,440 
> '- value java.util.HashMap$Entry @ 0xac836450                                 
>                                                                               
>                                  |           24 |           144 
>    '- [0] java.util.HashMap$Entry[16] @ 0xac833910                            
>                                                                               
>                                  |           80 |           592 
>       '- table java.util.HashMap @ 0xac831f58                                 
>                                                                               
>                                  |           40 |           632 
>          '- m java.util.Collections$UnmodifiableMap @ 0xac8304b0              
>                                                                               
>                                  |           24 |           656 
>             '- absoluteIndex org.apache.xbean.naming.context.ImmutableContext 
> @ 0xac82f470                                                                  
>                                  |           40 |         4,880 
>                '- key java.util.LinkedHashMap$Entry @ 0xac840310              
>                                                                               
>                                  |           32 |         4,912 
>                   '- [4] java.util.HashMap$Entry[16] @ 0xac8401b0             
>                                                                               
>                                  |           80 |            80 
>                      '- table java.util.LinkedHashMap @ 0xac83fe98            
>                                                                               
>                                  |           48 |         5,088 
>                         '- map java.util.LinkedHashSet @ 0xac83dac0           
>                                                                               
>                                  |           16 |         5,104 
>                            '- c java.util.Collections$UnmodifiableSet @ 
> 0xac83d588                                                                    
>                                        |           16 |         5,120 
>                               '- value 
> java.util.concurrent.atomic.AtomicReference @ 0xac83d080                      
>                                                                         |     
>       16 |         5,136 
>                                  '- federatedContextRef 
> org.apache.xbean.naming.context.ContextFederation @ 0xac8386e0                
>                                                        |           16 |       
>   5,152 
>                                     '- contextFederation 
> org.apache.xbean.naming.context.WritableContext$NestedWritableContext @ 
> 0xac837720                                                  |           56 |  
>        5,704 
>                                        '- value java.util.HashMap$Entry @ 
> 0xac899150                                                                    
>                                      |           24 |            80 
>                                           '- [13] java.util.HashMap$Entry[16] 
> @ 0xac897a20                                                                  
>                                  |           80 |           880 
>                                              '- table java.util.HashMap @ 
> 0xac894d90                                                                    
>                                      |           40 |           920 
>                                                 '- value 
> java.util.concurrent.atomic.AtomicReference @ 0xac830548                      
>                                                       |           16 |        
>    936 
>                                                    '- bindingsRef 
> org.apache.xbean.naming.context.WritableContext$NestedWritableContext @ 
> 0xac82f498                                         |           56 |        
> 11,352 
>                                                       '- value 
> java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xac8a2f50                       
>                                                 |           32 |        
> 11,384 
>                                                          '- [6] 
> java.lang.ThreadLocal$ThreadLocalMap$Entry[16] @ 0xac8a20f8                   
>                                                |           80 |        11,688 
>                                                             '- table 
> java.lang.ThreadLocal$ThreadLocalMap @ 0xac8a0c08                             
>                                           |           24 |        11,712 
>                                                                '- 
> inheritableThreadLocals 
> org.apache.geronimo.transaction.manager.TransactionTimer$CurrentTime @ 
> 0xac89dcf8  Thread-24 Thread|           88 |        11,880 
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> {code}
> CurrentTime does not create a ThreadLocal. However, it can "inherit" an 
> InheritableThreadLocal from the parent Thread (the currentThread, when it is 
> created). This is obviously what is happening, in this case. Best solution 
> that I have so far, is to force the creation of the TransactionTimer thread 
> during server start, rather than allowing it to be started on an arbitrary 
> thread...

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