Caveat: Apparently I am not as well. :)
1.) I looked at the 65M issue. On my development box (OSX) I set it
to -Xms128m -Xmx128m (basically arbitrary). So when I went to the
remote hosting company, I purchase a similar amount.
a. However, we are doing *very* little work (lots of product fetches
and only a few product inserts and updates) and it runs out of memory
*very* fast which I *assume* means it is my code, but I don't know.
b. I am doing research and here is a "web recommendation" (for all
that is worth)
Whenever possible, Unidata recommends
-Xmx1500m for 32-bit systems, and -Xmx2048m --Xmx4096m for 64-bit
systems.
c. Since the host is 64-bit, I am wondering whether my assumptions
may be off for 64-bit systems.
2. DataContext: Sorry, but I am getting confused on this one. I am
using BaseContext.getThreadObjectContext() based on recommendations (I
converted all the old DataContext refs to BaseContext, but I don't
really understand it from reading the docs) and am *not* releasing it
at the end of session. Not quite sure of how to do this properly.
3. Don't know how to set the cache to retain N number of objects. I
experimented with
query.setPageSize(RowsPerPage);
query.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
query.setCacheGroups("product", "ProductList");
This seemed to help quite a bit but I still eventually ran out of
memory. I recently removed *all* the SHARED_CACHE and it ran out of
memory very fast.
Thanks for your input
Joe
On Sep 16, 2009, at 2:25 PM, Mike Kienenberger wrote:
> Caveat: I'm not really an expert on Cayenne memory management.
>
> 1) Are you allocating enough heap memory to the app server to start
> with? I don't know what the default is these days, but in the old
> days, an application by default only gets 64Mb of memory -- that's
> pretty small.
>
> 2) Are you using a new DataContext per request? Or at least per
> session?
>
> 3) I seem to remember that the cache strategy is configurable. Have
> you configured a cache that only retains N number of objects for a
> suitable value of N?
>
> On Wed, Sep 16, 2009 at 2:11 PM, Joe Baldwin
> <jfbaldwi..arthlink.net> wrote:
>> Hi,
>>
>> I have asked this question a number of ways but I still have a very
>> serious
>> problem with Cayenne-specific memory management configuration
>> associated
>> with Tomcat.
>>
>> The problem with debugging is that given that I have very little
>> visibility
>> into the Cayenne memory management it is extremely difficult to
>> debug this
>> using conventional strategies. Also I am not requesting anything
>> from the
>> system that is terribly exceptional so I am attempting to use default
>> settings as much as possible.
>>
>> My strategy is to ask the experts for a Cayenne configuration and
>> standard
>> memory management steps I should take to conform to the new Cayenne
>> memory
>> management design intentions.
>>
>> Problem:
>> 1. I have essentially a webstore, three tier design with Tomcat,
>> Cayenne and
>> MySQL.
>> 2. When after only a few queries of products, tomcat freezes up and
>> reports
>> out of memory errors.
>>
>> I have attempted to configure the caching strategy ask best as I can
>> understand from the docks but this only gets me a few more hours of
>> usage
>> before the out of memory errors. (I tried the SHARED_CACHE). The
>> NO_CACHE
>> strategy is worse.
>>
>> I would appreciate a set of steps (aka a primer) that should handle a
>> website with a lot of fetches of hundreds of data objects (i.e.
>> products)
>> and very few updates.
>>
>> Note: My gut feeling is that I am not properly managing the data
>> object
>> array properly and it is leaking memory.
>>
>> I would appreciate any input, but I would first like to know what the
>> minimum require steps are for managing at data object result set
>> ArrayList
>> so as to properly cache and then properly free the memory after it
>> is no
>> longer needed.
>>
>> Context: Tomcat, MySQL, Cayenne 3.0M6
>>
>> Thanks,
>> Joe Baldwin
>>
>>
This archive was generated by hypermail 2.0.0 : Wed Sep 16 2009 - 14:50:15 EDT