Michael,
Thank you for your patience on this. This is the worst problem I have
encountered and I believe that it is probably something I have
misunderstood (and failed to implement).
FWIW, I just did a little monitoring with JConsole with my current
development setup: Eclipse, Jetty, Cayenne 3.0M6, Tapesty 5.1, MySQL.
Yes I am able to monitor with JConsole on my development machine (but
not yet on the webhost). With shared cache ON, and testing with
50-100 concurrent users, it starts out at about 10-15 MB and then
spikes to 70-100MB. Most of the time after the Tomcat idle period
(i.e. 15 min) it GC down to about 20MB-15MB.
This new application I'm working on sounds similar to yours. Fairly
lightweight. After everything loaded in, I was using 20-21 MB of
memory and it stayed steady, even after doing about 100 queries in
Cayenne (I tend to pull back 1-7 records per set-of-queries, but
closer to 2-3 on average).
The app sounds similar, but my JConsole reports a huge spike which is
only released after the idle period. (This is with the Cache set to ON.)
I'm using session-based data contexts and
on-demand data contexts. The memory footprint was fine and I'm not
caching (I go get fresh data every query). I'm not sure why you are
seeing the anomaly you are seeing unless you just need a bit more RAM
for Tomcat to be stable.
Mike Kienenberger recommended that I handle this via a filter. I must
admit that I am still not totally comfortable with BaseContext and
could have made a mistake. I did not want to go in this direction
until I am sure that I have the blue-print for the correct solution.
So how do I implement you session-based data context configuration.
(Please send explicit code as it appears that I am just using the
default BaseContext.)
Thanks,
Joe