[jboss-jira] [JBoss JIRA] (JBCL-185) BaseClassLoader.loadClass() is slow under load

Aaron Ogburn (JIRA) jira-events at lists.jboss.org
Wed Sep 26 17:39:03 EDT 2012


    [ https://issues.jboss.org/browse/JBCL-185?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12722115#comment-12722115 ] 

Aaron Ogburn commented on JBCL-185:
-----------------------------------

Could you clarify what you were wondering if I've tried?  The performance testing exposing the issue on 2.0.11.GA?  Or implementing this change on 2.0.11.GA?  Currently, neither.  

Were you wondering if 2.0.11.GA would already have addressed this?  If so, I don't believe so.  Comparing 2.0.11.GA and 2.0.9.GA so far, I'm not really seeing any notable differences in BaseClassLoader or BaseClassLoaderDomain that would appear to provide any different caching/locking behavior seen here on 2.0.9.
                
> BaseClassLoader.loadClass() is slow under load
> ----------------------------------------------
>
>                 Key: JBCL-185
>                 URL: https://issues.jboss.org/browse/JBCL-185
>             Project: JBoss ClassLoader
>          Issue Type: Enhancement
>          Components: ClassLoader
>    Affects Versions: JBossCL.2.0.9.GA 
>         Environment: -JBoss Enterprise Application Platform (EAP) 5.1.2
> -JBossCL 2.0.9.GA
>            Reporter: Aaron Ogburn
>            Assignee: Ales Justin
>         Attachments: BaseClassLoader.java, JBCL-185.patch
>
>
> Classloader performance dropped from EAP 4.3 to 5.  Thread dumps show threads facing contention in the classloader:
>    java.lang.Thread.State: BLOCKED (on object monitor)
> 	at org.jboss.classloader.spi.base.BaseClassLoader.doLoadClass(BaseClassLoader.java:495)
> 	- waiting to lock <0x80e22960> (a org.jboss.classloader.spi.base.BaseClassLoader)
> 	at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:447)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> 	at org.jboss.classloading.spi.DelegatingClassLoader.loadClass(DelegatingClassLoader.java:87)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> 	at org.jboss.util.loading.DelegatingClassLoader.loadClass(DelegatingClassLoader.java:97)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> These are repeat lookups.  The thread and classloader trace logging show that these look ups are not returning cached values from checkCacheAndBlackList() and so they are having to go progress through doLoadClass() and the baseclassloderdomain to finally return the class from another classloaders cache.  This is bad as threads are forced to synchronize to return a cached class from elsewhere whereas the cached value return could all happen concurrently.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list