You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Kevan Miller (JIRA)" <ji...@apache.org> on 2009/09/13 18:11:58 UTC

[jira] Created: (GERONIMO-4869) InheritableThreadLocal causing ClassLoader memory leak in TransactionTimer thread

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.


[jira] Closed: (GERONIMO-4869) InheritableThreadLocal causing ClassLoader memory leak in TransactionTimer thread

Posted by "Kevan Miller (JIRA)" <ji...@apache.org>.
     [ 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.


[jira] Assigned: (GERONIMO-4869) InheritableThreadLocal causing ClassLoader memory leak in TransactionTimer thread

Posted by "Kevan Miller (JIRA)" <ji...@apache.org>.
     [ 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.