geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevan Miller (JIRA)" <j...@apache.org>
Subject [jira] Created: (GERONIMO-4869) InheritableThreadLocal causing ClassLoader memory leak in TransactionTimer thread
Date Sun, 13 Sep 2009 16:11:58 GMT
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
             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.


Mime
View raw message