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] Closed: (GERONIMO-4869) InheritableThreadLocal causing ClassLoader memory leak in TransactionTimer thread
Date Tue, 27 Oct 2009 01:47:59 GMT

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

Kevan Miller closed GERONIMO-4869.
----------------------------------

    Resolution: Fixed

Start TransactionTimer thread during start-up. 

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


Mime
View raw message