[prev in list] [next in list] [prev in thread] [next in thread]
List: jibx-devs
Subject: [jibx-devs] [jira] Created: (JIBX-456) JiBX not caching marshaller
From: "Wade Poziombka (JIRA)" <jira () codehaus ! org>
Date: 2011-09-01 20:39:32
Message-ID: 11776241.9966.1314909572164.JavaMail.haus-jira () codehaus01 ! managed ! contegix ! com
[Download RAW message or body]
JiBX not caching marshaller and unmarshaller classes
----------------------------------------------------
Key: JIBX-456
URL: https://jira.codehaus.org/browse/JIBX-456
Project: JiBX
Issue Type: Bug
Components: core
Affects Versions: JiBX 1.2.3
Environment: Windows and Linux, JRE 1.6.0_xx, Eclipse equinox OSGi container
Reporter: Wade Poziombka
When running under heavy load we find a lot of blocking on ClassLoader.loadClass() of \
the variety below. On inspection it appears that the caching (m_marshallerClasses \
and m_unmarshallerClasses members) of BindingFactoryBase never cache these classes \
resulting in repeated calls to loadClass. This has very detrimental impact on \
performance. I have patched locally to load the classes at the bottom of the \
constructor as follows:
if (m_unmarshallers != null)
{
for (int i = 0; i < m_unmarshallers.length; ++i)
{
if (m_unmarshallers[i] != null)
{
m_unmarshallerClasses[i] = loadClass(m_unmarshallers[i]);
}
}
}
if (m_marshallers != null)
{
for (int i = 0; i < m_marshallers.length; ++i)
{
if (m_marshallers[i] != null)
{
m_marshallerClasses[i] = loadClass(m_marshallers[i]);
}
}
}
This significantly improves performance be eliminating lock contention on the class \
loader. It appears this is the intended behavior from the code. However nowhere in \
the code are classes assigned to the arrays.
example of blocking stack.
New I/O client worker #2-7 [BLOCKED] CPU time: 0:44
org.eclipse.osgi.internal.loader.BundleLoader.findImportedSource(String, \
KeyedHashSet) org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(String, \
boolean, ClassLoader) org.eclipse.osgi.internal.loader.BundleLoader.findClass(String, \
boolean) org.eclipse.osgi.internal.loader.BundleLoader.findClass(String)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(String, boolean)
java.lang.ClassLoader.loadClass(String)
org.jibx.runtime.impl.BindingFactoryBase.loadClass(String)
org.jibx.runtime.impl.BindingFactoryBase.getMarshallerClass(int)
org.jibx.runtime.impl.MarshallingContext.getMarshaller(String)
<myobject>.marshal(IMarshallingContext)
org.jibx.runtime.impl.MarshallingContext.marshalRoot(Object)
org.jibx.runtime.impl.MarshallingContext.marshalDocument(Object)
...
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Special Offer -- Download ArcSight Logger for FREE!
Finally, a world-class log management solution at an even better
price-free! And you'll get a free "Love Thy Logs" t-shirt when you
download Logger. Secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsisghtdev2dev
_______________________________________________
jibx-devs mailing list
jibx-devs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-devs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic