Our website based on tapestry 4 seems to be out of memory and is crashing
every few days no matter what -Xmx I set. It is actually not that bad, with
some scripts we get the website restarted within minutes in case of crash.
I've been investigating the source of this issue lately using the new Jhat
and Jmap tools of the JDK 1.6.
Most of the memory seems to be HashMap$Entry objects which I believe are
keys to most caches in the app (especially ehcache).
But what was surprising is the number of instances of tapestry components.
About 11000 pagelinks and roughly the same amount for IfBean and other
components after less than 1 day of execution. With jhat I've been able to
trace the origins of these components and they originate from
ExpressionBinding (72000 instances).
I'm not that familiar with the lifecycle of tapestry components but I'm
curious to understand why has tapestry created so many instances?
And given the numbers of instances, I'm wondering if Tapestry shouldn't have
limits on its caches?
Would it improve the memory usage if I use cycle.forgetPage(...) for every
page?

--
Thanks,

Henri.

Reply via email to