Then I don't think these are viable options, my dev server uses Java
1.5.
What I was hoping for is sort of a simple how-to on best practices
when cleaning up after a large query. Especially when there are many
sessions anticipated.
On Aug 13, 2009, at 4:45 PM, Michael Gentry wrote:
FWIW, jmap -dump is only on Java 1.6, not 1.5.
mrg
On Thu, Aug 13, 2009 at 3:29 PM, Tore Halset<[email protected]>
wrote:
Hello.
It is hard to tell where the memory problems are without looking at
the
actual used memory. I normally use jmap to dump memory info and
then jhat on
a different computer to analyze the dump.
jmap -dump:live,file=filename pid
jhat -J-Xmx10G filename
Depending on your heap size, jhat may need a lot of memory and cpu.
That is
why I normally copy the file to a separate non-production server.
If your memory are filled with cayenne DataRows, then you should
look at the
size of the datarow cache. Both DataRows and CayenneDataObject use
Maps that
need quite a lot of memory, so you should not have too many.
Regards,
- Tore.
On Aug 13, 2009, at 6:22 PM, Joe Baldwin wrote:
Background:
I have been attempting to do as much performance tuning as I can
given the
visibility of the middleware I am using, but am running into
severe "out of
memory" errors with Tomcat on my production server. My current
theory is
that I may have missed something concerning how to properly
maintain my
Cayenne data objects.
Configuration:
1. I am using the most recent version of Cayenne.
2. This is primarily a web app, using JSP, Tomcat, Cayenne and MySQL
3. Tested both on OSX and Linux
4. Essentially, it is a webstore with a lot of products
- small amount of UPDATES
- very large amount of searches resulting in result sets
that will
average between 50-500 products for read-only
- occasional large result sets of a few thousand products for
read-only
5. The design is a simple 3-tier.
After a few hours to a few days of what appears to be very light
usage,
Tomcat reports "out of memory" errors. Since the vast majority of
the tasks
performed by the app are funneled through Cayenne, I am assuming
that is
where I am making the mistake.
Question:
What is the best way to manage the data objects in this
configuration?
(i.e. caching, releasing memory, etc)
Note:
I was researching the Java Library ArrayList (which I believe is the
work-horse for the Cayenne result sets), and there are many
recommendations
concerning custom clearing of the list and releasing memory. Is
this
possibly where I am may have missed something?
Thanks,
Joe