True, but it's better than not asking at all :). In my experience system.gc() *usually* results in an immediate gc sweep in a development environment where the JVM isn't usually all that busy.
You're right though, it's a request, not a demand. --- Pat > -----Original Message----- > From: Mark Stang [mailto:[EMAIL PROTECTED] > Sent: Monday, September 26, 2005 1:02 PM > To: Tapestry users; tapestry-user@jakarta.apache.org > Subject: RE: OutOfMemoryError Tapestry 4.0 > > I don't believe that calling System.gc() will have the immediate affect > you require. The call is more of a request than a command. > > > -----Original Message----- > From: seloha . [mailto:[EMAIL PROTECTED] > Sent: Mon 9/26/2005 12:54 PM > To: tapestry-user@jakarta.apache.org > Subject: RE: OutOfMemoryError Tapestry 4.0 > > Thanks Pat, > > One thing I was not doing which you pointed out was setting the list to > null > in pageDetached(PageEvent event) so I added this and also included > System.gc(). This unfortunately had no affect. The list uses abstract > getter > and setter and is initialized in the .page spec with > initial-value="ognl:null". > > I have a number of selection models for PropertySelection components which > are initialized lazily which I am not resetting to null each time (but > there > are only about 100 total items in these objects). Could these have any > affect. > > I am really poking around in the dark. Similar Spring and Hibernate > mechanism that I wrote using Tapestry 3.0.3 is on a production system and > has run with no problems for months. Admittedly I never go and display > 5000 > objects at once though! > > I cannot see that I am inadvertently holding onto any objects in the code > but you never know? > > Thanks again for your help, > > Paul > > > Patrick Casey <[EMAIL PROTECTED]> wrote: > > It sounds like a memory leak, but it could just be a slow garbage > collector as well. Try adding: > > System.gc() to the end of your transaction to guarantee the garbage > collector runs after each page render. Then see if repeated page renders > still blow out your memory. If they do, then I suspect that somehow you > (or > tapestry, or spring) is hanging onto a reference to those object after > page > completion. > > --- Pat > > PS You *are* resetting your page properties to null (and nulling out > the list of 5000 items) on the page's post-render cleanup phase, right? > > >-----Original Message----- > >From: seloha . [mailto:[EMAIL PROTECTED] > >Sent: Monday, September 26, 2005 3:11 AM > >To: tapestry-user@jakarta.apache.org > >Subject: OutOfMemoryError Tapestry 4.0 > > > >I have a page which allows a user to search the database based on various > >criteria. I have restricted the number of returned items to 5000. I > >display > >the items in the same search page using the @For component with > >volatile="ognl:true" . Repeated searches which return 5000 items will > >result > >in an OutOfMemoryError exception. If I leave the page and then return or > >stay on the page I will ultimately get an OutOfMemoryError exception. > > > >I can view other pages after this exception but a repeat of trying to > >display 5000 items on this page will display an OutOfMemory exception. > > > >The only way to clear this problem is to restart the servlet container. > >This > >fails using either Jetty or Tomcat in both development and production > >environments (using different operating systems). > > > >All the variables displaying the list are explicitly declared in the > .page > >specification and using initial-value set to null. > > > >I am using Tapestry 4.0 beta 8. > > > >The data is retrieved using Spring and Hibernate (no fancy patterns, > >standard Spring declarative transactions and using > getHibernateTemplate()) > >and mapped to Tapestry using hivemodule.xml: > > > > <implementation service- > >id="hivemind.lib.DefaultSpringBeanFactoryHolder"> > > <invoke-factory> > > <construct autowire-services="false" > >class="uk.co.cymbol.tair.tapestry.AppSpringBeanFactoryHolderImpl"> > > <event-listener service-id="hivemind.ShutdownCoordinator" /> > > <set-object property="context" > >value="service:tapestry.globals.WebContext" /> > > </construct> > > </invoke-factory> > > </implementation> > > > >and injecting the appropriate Spring bean. > > > >I am completely confused as to how to tie down the problem and isolate > >which > >section of code is causing the problem. > > > >Any help would be much appreciated. > > > >Paul > > > > > > > >--------------------------------------------------------------------- > >To unsubscribe, e-mail: [EMAIL PROTECTED] > >For additional commands, e-mail: [EMAIL PROTECTED] > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]