cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexander Klimetschek <>
Subject Re: Performance with blocks protocol
Date Fri, 03 Nov 2006 14:59:28 GMT
Daniel Fagerstrom schrieb:
> I don't find any reasons for that they should be larger in the blocks 
> case. Again profiling would give some clues.
> One possibility is that there is some fault in the component handling so 
> that the block servlet component or tree processor is recreated instead 
> of reused in some cases.

I have done some profiling with JProfiler. First of all there is no 
obvious leak (due to the massive amount of reflection that happens 
inside the sitemap). The heap simply grows and grows even with simple 
page requests without much dynamics like forms. The garbage collection 
does not free much, so you have a linear growth up to something like 70 
MB, when the maximum is reached and an error is thrown.

But from what I have seen, I suppose that the BufferedOutputStream of 
resources (css, images, javascript), which we handle via a 
ResourceReader that calls a super block, which contains all the 
resources, are not properly closed or removed. That stream holds all the 
data in a byte array. Can it be that nobody actually closes or clears 
the OutputStream that is present when the ResourceReader gets a 
BlockSource as input?

I.e. the call looks like: URL -> DispatcherServlet -> BlockServlet -> 
sitemap.SitemapServlet -> internal processing -> ResourceReader -> 
BlockServlet -> SitemapServlet reading the resource from a file.


Alexander Klimetschek

View raw message