-
Notifications
You must be signed in to change notification settings - Fork 465
ActivityCorrelator is causing a classloader leak #314
Copy link
Copy link
Closed
Description
ActivityCorrelator uses ThreadLocal, but it never calls ThreadLocal.remove() to clean it up. As a result, if a thread pool is used, the classloader that loaded ActivityCorrelator can never be garbage collected thus creating a memory leak.
Example of the path from GC root:
this - value: org.apache.catalina.loader.WebappClassLoader #3
<- <classLoader> - class: com.microsoft.sqlserver.jdbc.ActivityId, value: org.apache.catalina.loader.WebappClassLoader #3
<- <class> - class: com.microsoft.sqlserver.jdbc.ActivityId, value: com.microsoft.sqlserver.jdbc.ActivityId class ActivityId
<- value - class: java.lang.ThreadLocal$ThreadLocalMap$Entry, value: com.microsoft.sqlserver.jdbc.ActivityId #2
<- [54] - class: java.lang.ThreadLocal$ThreadLocalMap$Entry[], value: java.lang.ThreadLocal$ThreadLocalMap$Entry #137
<- table - class: java.lang.ThreadLocal$ThreadLocalMap, value: java.lang.ThreadLocal$ThreadLocalMap$Entry[] #28
<- threadLocals (thread object) - class: org.apache.tomcat.util.threads.TaskThread, value: java.lang.ThreadLocal$ThreadLocalMap #28
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels