[ https://issues.apache.org/jira/browse/SLING-3359?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13896261#comment-13896261 ]
Chetan Mehrotra commented on SLING-3359: ---------------------------------------- As an extension one can found out possible leak suspects (actual root cause) using the script provided at [1]. This script can be executed as part of jHat OQL [2]. The script dumps the report printing out the live path of object which is preventing it from getting GC. Below is a portion of the report generated from one of the heap dumps analyzed {noformat} org.apache.sling.event.impl.jobs.queues.AbstractJobQueue$1@0x12547e960 Following are few of the live paths found Live path org.apache.sling.event.impl.jobs.queues.AbstractJobQueue$1@0x12547e960 java.lang.Thread@0x12547e888 [Ljava.lang.Thread;@0x124f18f58 java.lang.ThreadGroup@0x123346e80 java.lang.Thread@0x126635c48 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x13161da50 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x1318253e0 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x1318253c0 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x1318253a0 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a128c90 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a24c198 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a24c178 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a24c158 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a24c138 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a24c118 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a24c0f8 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a24c0d8 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a24c0b8 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a24c098 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a24c078 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a24c058 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a007e30 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a007e10 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a007df0 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a007dd0 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a007db0 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a007d90 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node@0x12a007d70 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@0x125d2c968 java.lang.Thread@0x126637b00 java.util.concurrent.ThreadPoolExecutor$Worker@0x126637b68 java.util.HashMap$Entry@0x126640058 [Ljava.util.HashMap$Entry;@0x12663fde8 java.util.HashMap@0x125d2ca08 java.util.HashSet@0x125d2c9f8 java.util.concurrent.ThreadPoolExecutor@0x125d2c8a0 org.apache.sling.commons.threads.impl.DefaultThreadPool@0x125d2c7b0 [*] org.apache.sling.commons.threads.impl.ThreadPoolFacade@0x125d2c798 [*] org.apache.sling.commons.threads.impl.DefaultThreadPoolManager$Entry@0x125d535d0 [*] java.util.HashMap$Entry@0x125d535b0 [Ljava.util.HashMap$Entry;@0x124147940 java.util.HashMap@0x124147910 org.apache.sling.commons.threads.impl.DefaultThreadPoolManager@0x124146e50 [*] org.apache.felix.framework.ServiceRegistrationImpl@0x12414f3e8 org.apache.sling.commons.threads.impl.Activator@0x12414f3d0 [*] org.apache.felix.framework.BundleImpl@0x122809f78 org.apache.felix.framework.ServiceRegistrationImpl@0x1241e8c40 class org.apache.sling.commons.threads.impl.WebConsolePrinter org.apache.sling.commons.threads.impl.WebConsolePrinter@0x1241e8a70 [*] {noformat} Logged SLING-3383 based on above. [1] https://gist.github.com/chetanmeh/8860776 [2] http://docs.oracle.com/javase/6/docs/technotes/tools/share/jhat.html > Classloader Leak Detector Console Tab > ------------------------------------- > > Key: SLING-3359 > URL: https://issues.apache.org/jira/browse/SLING-3359 > Project: Sling > Issue Type: New Feature > Components: Console > Reporter: Ian Boston > Assignee: Chetan Mehrotra > Attachments: > org.apache.sling.extensions.classloader-leak-detector-0.0.1-SNAPSHOT-src.zip > > > Chetan has created a classloader leak detector console at > https://github.com/chetanmeh/sling-leak-detector. It would be really good to > get this into the contrib are and released so that consumers of Sling can use > it to locate code in bundles that is leaking classloaders. -- This message was sent by Atlassian JIRA (v6.1.5#6160)