On Thu, 6 Mar 2003, Stephan Michels wrote:

> On Thu, 6 Mar 2003, Carsten Ziegeler wrote:
>
> >
> > Stephan Michels wrote:
> > >
> > > I do some profiling today, and wondering why the XSLT transformer
> > > burns performance like hell in setup(). After some debugging I noticed
> > > that the XSLT transformer create a complete new template/handler for
> > > each call of setup(), that because the parameter 'use-store' in
> > > cocoon.xconf is set to 'false' per default.
> > >
> > > After setting this parameter to 'true', the performance increased
> > > dramatically.
> > >
> > > So, is there a reason, why this parameter is set to 'false'? When
> > > not, I would change it to 'true'.
> > >
> > There was a reason: a memory leak :) So you can change from performance
> > to memory leak. This leak was at least in last Xalan versions, I never
> > tested if it is in the latest, so perhaps this is fixed now.
> > If not, you can run into serious memory problems.
>
> Doh! ;-) I'll make some longtime stability tests, to verify this. The
> memory leak should also occur if you use the store, except if you forget
> to remove the entries. At the moment, the concept of the XSLTC(and other)
> doesn't make any sense, because you compile all used stylesheets for
> every request :-/

I got NotSerializableException, if I stop the container. This remind
with my problems with LexicalTransformer. I solved this problem
using own writeObject() and readObject() methods, but the
XSLTProcessorImpl using Object[] instances. I also don't know why this
array isn't serializable, perhaps the Templates class isn't serializable.

Yesterday I measured a performance enhancement by the factor 20x .
Before each request took 2000-5000ms, which was untenable. After
setting this option, each request took 50-100ms(cached).

Perhaps you have an idea, where the problem lie on?

Thanks, Stephan Michels.

ERROR   (2003-03-07) 15:12.15:772   [core.store.transient] (Unknown-URI)
Unknown-thread/MRUMemoryStore: Error in dispose()
java.io.NotSerializableException:
org.apache.excalibur.xml.xslt.XSLTProcessorImpl
        at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
        at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1330)
        at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1302)
        at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1245)
        at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at
java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1224)
        at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1050)
        at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
        at
org.apache.excalibur.store.impl.AbstractFilesystemStore.serializeObject(AbstractFilesystemStore.java:479)
        at
org.apache.excalibur.store.impl.AbstractFilesystemStore.store(AbstractFilesystemStore.java:150)
        at
org.apache.excalibur.store.impl.MRUMemoryStore.dispose(MRUMemoryStore.java:129)
        at
org.apache.avalon.excalibur.component.DefaultComponentFactory.decommission(DefaultComponentFactory.java:320)

Reply via email to