On Fri, 7 Mar 2003, Sylvain Wallez wrote:

> Stephan Michels wrote:
>
> >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?
> >
>
> The problem, I think, comes from the fact that XSLTProcessor uses the
> transient store to store Templates, and that the <transient-store> in
> cocoon.xconf has the <parameter name="use-persistent-cache" value="true"/>.
>
> So we actually have a transient store that persists its contents to disk !!!

This is okay, if it's only persists in dispose().

But a simple (object instanceof java.io.Serializable) due to
checkSerializable() seems to be not enough to test if a object
is serializable.

:-/ Stephan Michels.

Reply via email to