I sent email below yesterday and never saw it in the list:

-----Original Message-----
From: Sebastien Tardif 
Sent: Wednesday, May 14, 2014 12:59 PM
To: 'Tomcat Users List'
Subject: Slow execution of Tomcat 7.0.52 due to coarse lock in 
WebappClassLoader.loadClass
I'm having some visible performance issue related to the use of method 
synchronized loadClass(String name, boolean resolve) in WebappClassLoader

I see that the author or least some of the author(s) of the class got the idea 
in other cases of a more specialize lock that against the entire instance.

Should we just lock here using the name of the class we are looking for?

My partial threads stack dump:

2014-05-14 12:36:01
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.45-b01 mixed mode):

"http-bio-31680-exec-57" - Thread t@124
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        ...
"http-bio-31680-exec-56" - Thread t@123
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        
"http-bio-31680-exec-55" - Thread t@122
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        
   Locked ownable synchronizers:
        - locked <444b3957> (a 
java.util.concurrent.locks.ReentrantLock$NonfairSync)

"http-bio-31680-exec-54" - Thread t@121
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.org.apache.xerces.internal.utils.ObjectFactory.findProviderClass(ObjectFactory.java:358)
        
"http-bio-31680-exec-53" - Thread t@120
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        
"http-bio-31680-exec-52" - Thread t@119
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        
"http-bio-31680-exec-51" - Thread t@118
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
javax.xml.parsers.FactoryFinder.getProviderClass(FactoryFinder.java:119)
        
"http-bio-31680-exec-50" - Thread t@117
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        

"http-bio-31680-exec-49" - Thread t@116
   java.lang.Thread.State: RUNNABLE
        at java.lang.Class.getClassLoader0(Native Method)
        at java.lang.Class.getClassLoader(Class.java:589)
        at 
com.sun.xml.internal.bind.v2.model.annotation.LocatableAnnotation.create(LocatableAnnotation.java:63)
        at 
com.sun.xml.internal.bind.v2.model.annotation.RuntimeInlineAnnotationReader.getAllFieldAnnotations(RuntimeInlineAnnotationReader.java:60)
        at 
com.sun.xml.internal.bind.v2.model.annotation.RuntimeInlineAnnotationReader.getAllFieldAnnotations(RuntimeInlineAnnotationReader.java:42)
        
"http-bio-31680-exec-48" - Thread t@115
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at javax.xml.bind.ContextFinder.safeLoadClass(ContextFinder.java:481)
        
"http-bio-31680-exec-47" - Thread t@114
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
javax.xml.parsers.FactoryFinder.getProviderClass(FactoryFinder.java:119)
        
"http-bio-31680-exec-46" - Thread t@113
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        
"http-bio-31680-exec-45" - Thread t@112
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:47)
        

"http-bio-31680-exec-44" - Thread t@111
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.org.apache.xerces.internal.utils.ObjectFactory.findProviderClass(ObjectFactory.java:358)
        at 
com.sun.org.apache.xerces.internal.utils.ObjectFactory.newInstance(ObjectFactory.java:303)
        

"http-bio-31680-exec-43" - Thread t@110
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.org.apache.xerces.internal.utils.ObjectFactory.findProviderClass(ObjectFactory.java:358)
        

"http-bio-31680-exec-42" - Thread t@109
   java.lang.Thread.State: TIMED_WAITING
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for <2aa68578> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at 
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)
        at 
java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:424)
        at org.apache.tomcat.util.threads.TaskQueue.poll(TaskQueue.java:86)
        at org.apache.tomcat.util.threads.TaskQueue.poll(TaskQueue.java:32)
        at 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:955)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917)
        at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
        - None

"http-bio-31680-exec-40" - Thread t@107
   java.lang.Thread.State: TIMED_WAITING
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for <2aa68578> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at 
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)
        at 
java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:424)
        at org.apache.tomcat.util.threads.TaskQueue.poll(TaskQueue.java:86)
        at org.apache.tomcat.util.threads.TaskQueue.poll(TaskQueue.java:32)
        at 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:955)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917)
        at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
        - None

"http-bio-31680-exec-39" - Thread t@106
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.org.apache.xerces.internal.utils.ObjectFactory.findProviderClass(ObjectFactory.java:358)
        

"http-bio-31680-exec-38" - Thread t@105
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
javax.xml.parsers.FactoryFinder.getProviderClass(FactoryFinder.java:119)
        at javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:154)
        at javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:241)
        

"http-bio-31680-exec-37" - Thread t@104
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:47)
        at 
com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.loadObjectFactory(ModelBuilder.java:249)
        

"http-bio-31680-exec-36" - Thread t@103
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.org.apache.xerces.internal.utils.ObjectFactory.findProviderClass(ObjectFactory.java:358)
        at 
com.sun.org.apache.xerces.internal.utils.ObjectFactory.newInstance(ObjectFactory.java:303)
        at 
com.sun.org.apache.xerces.internal.utils.ObjectFactory.newInstance(ObjectFactory.java:289)
        

"http-bio-31680-exec-35" - Thread t@102
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        

"http-bio-31680-exec-34" - Thread t@101
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        
"http-bio-31680-exec-33" - Thread t@100
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        

"http-bio-31680-exec-32" - Thread t@99
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.org.apache.xerces.internal.utils.ObjectFactory.findProviderClass(ObjectFactory.java:358)
        at 
com.sun.org.apache.xerces.internal.utils.ObjectFactory.newInstance(ObjectFactory.java:303)
        

"http-bio-31680-exec-31" - Thread t@98
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
javax.xml.parsers.FactoryFinder.getProviderClass(FactoryFinder.java:119)
        at javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:154)
        

"http-bio-31680-exec-30" - Thread t@97
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at javax.xml.bind.ContextFinder.safeLoadClass(ContextFinder.java:481)
        at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:185)
        

"http-bio-31680-exec-29" - Thread t@96
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        

"http-bio-31680-exec-28" - Thread t@95
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
javax.xml.parsers.FactoryFinder.getProviderClass(FactoryFinder.java:119)
        at javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:154)
        

"http-bio-31680-exec-27" - Thread t@94
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
javax.xml.parsers.FactoryFinder.getProviderClass(FactoryFinder.java:119)
        

"http-bio-31680-exec-26" - Thread t@93
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:505)
        at 
com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.findClass(ReflectionNavigator.java:47)
        
"http-bio-31680-exec-25" - Thread t@92
   java.lang.Thread.State: BLOCKED
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1605)
        - waiting to lock <264d40df> (a 
org.apache.catalina.loader.WebappClassLoader) owned by "http-bio-31680-exec-41" 
t@108
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at 
com.sun.org.apache.xerces.internal.utils.ObjectFactory.findProviderClass(ObjectFactory.java:358)
        at 
com.sun.org.apache.xerces.internal.utils.ObjectFactory.newInstance(ObjectFactory.java:303)
        
.. and more


-----Original Message-----
From: Leon Rosenberg [mailto:rosenberg.l...@gmail.com] 
Sent: Friday, May 09, 2014 12:15 PM
To: Tomcat Users List
Subject: Test Mail, Please Ignore

I am wondering that I don't see any mails for a whole day on the list, this is 
pretty unusual, so I try with a TestMail

Leon

Reply via email to