From my understanding PageContextImpls are pooled, but not the JSP
output (body). Those are written using JspWriterImpls that buffer only
8KB of output.
If you are using tags, then their content is kept in a char array inside
BodyContentImpls. Each (pooled) PageContextImpl has a stack of these and
the stack and the BodyContentImpl including the char array are not
resized after usage. The pooled PageContextImpl keeps references to those.
The LIMIT_BUFFER makes the BodyContentImpl resizing to 512 Bytes in case
it grew larger.
Jeff Turner wrote:
Hi,
On Thu, May 04, 2006 at 11:10:20AM +0200, Remy Maucherat wrote:
Jeff Turner wrote:
1 May: 93 Objects (126Mb)
2 May: 107 Objects (263Mb)
3 May: 492 Objects (486MB)
BodyContentImpls are pooled and reused since it makes JSP processing
significantly faster. If the application is evil, and uses body tags
with huge bodies (it seems to be the case here), then there could be a
problem.
Just wondering - are all JSP bodies pooled, or only tag bodies? Eg.
would this JSP's body be pooled:
<%= for (int i=0; i<1000000; i++) { out.print("womble"); } %>
Or only if it were wrapped in JSP tag.
Large buffers may be discarded after usage, by setting the
"org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER" system property
to "true". Unfortunately, performance will go down and GC activity will
go up.
It appears to have fixed the leak on issues.a.o.
Cheers,
Jeff
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
kippdata informationstechnologie GmbH
Bornheimer Str. 33a
53111 Bonn
Tel.: 0228/98549-0
Fax: 0228/98549-50
www.kippdata.de
=======================
kippdata informationstechnologie GmbH
Bornheimer Str. 33a
D-53111 Bonn
Tel.: +49/0228/98549-0
Fax: +49/0228/98549-50
www.kippdata.de
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]