I think this is a great finding - it will certainly help all those teams
faced with the Out of memory errors which curiously pops up oly after we
move the code to production..

I hope you will have the tomcat developers look into this by sending this to
tomcat-developers forum.

THanks,
Anoop

On 12/19/05, Andrievsky Dmaitry <[EMAIL PROTECTED]> wrote:
>
> Hello users,
>
> About a half a year ago I've found that my webapp works fine in
> development environment, but leaks memory in production one.
> I've searched through all the code, found a few minor errors, but it
> didn't help.
> (of course, tag pooling are disabled completely)
>
> So then i've tried to use profiler, looking on alien classes.
> (I've tried before too, but my attention was concentrated on my own
> classes)
>
> And then i've found lots of
> org.apache.jasper.runtime.PageContextImpl
> from which there were a lot of references to the objects, that i've
> treated as dead.
>
>
> All PageContextImpl's lived at
> org.apache.jasper.runtime.JspFactoryImpl.pool
>
>
> There are property of org.apache.jasper.runtime.JspFactoryImpl, named
> USE_POOL, which rules pool usage, but it is private,
> and i've not found any way to set it to "false" from outside.
> Initially it's "true".
>
> So, i've set it to "false" directly in code,
> rebuilt tomcat and replaced files ${CATALINA_HOME}/common/lib/jasper-*.jar
> from production environment with fresh ones.
>
> So, it seems that the problem is successfully solved.
> As far as I can see there no more memory leakage.
>
> I think it would be useful to allow users to set property of
> org.apache.jasper.runtime.JspFactoryImpl.USE_POOL from config files or
> in any other way, without rebuilding entire tomcat application.
>
> P.S.
> In fact, I think, it's not REAL memory leak - memory usage, may be,
> will stop grow on some large value (2+ GB, when pool become full), but i
> have not such
> amount of memory.
> Now memory usage about 100-200 mb after full gc, depending on amount
> of currently working users.
>
> P.P.S What seems to me interesting.
> Although before putting PageContextImpl into pool JspFactoryImpl calls
> pc.release(), and inside the method all links must become null (or
> not?..) and referenced objects must become available to gc, they are not.
> May be it is the root of the problem?..
>
> BTW disabling of pool solves the problem completely...
>
>
> --
> Best regards,
> Dmitry Andrievsky                            mailto:[EMAIL PROTECTED]
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


--
Thanks and best regards,
Anoop

Reply via email to