>- see footer for list info -< Just wanted to reply to Simon saying that although I ended up not needing the stringBuilder earlier, I've been using it in the import area of the site where the files go back in and its been awesome, massive performance benefits, so thank you for that. I would have gone back to figure out why I was getting worse memory problems when using it before, but I'm on a deadline and don't have the luxury of being able to do academic sleuthing at the moment.
One thing I did look up was how to set it back to empty to reuse it, which is to use the oSBuilder.setLength(0) method. Cheers. Mr "Zippy Performance on his Railo App" Wild. 2009/12/7 Rich Wild <[email protected]> > Yup, ended up using Peter's method of splitting up different branches in > the XML into separate files, which meant I didn't have to concatenate the > string variables. Still creating large variables though, so had to increase > the MaxPermSize > > Now running with > > <jvm-arg>-Xmx1000M</jvm-arg> > <jvm-arg>-Xms1000M</jvm-arg> > > <jvm-arg>-Xmn512M</jvm-arg> > > in the resin.conf file > > Which is able to handle it. Its a lot of memory to dedicate, but the > machine isn't doing anything else. If anyone else has any memory tips for > Railo, I'm all ears though. > > in other news, I love Railo. Its pretty cool. > > 2009/12/7 Snake <[email protected]> > > >- see footer for list info -< >> Rich, >> >> Simons method will have resulted in a lot of class loading being that >> object >> had to be instantiated each time, which if you are doing it many times for >> each request then this would explain the out of memory issue. >> >> Try using >> >> Application.oXml = createObject("java","java.lang.StringBuilder").init(); >> >> So you are caching the object. >> >> Also class loading uses different java memory than general page execution. >> To increase the memory available for this you need to up the MaxPermSize >> >> Glad to see you are using Railo ;-) >> >> -- >> Russ >> >> -----Original Message----- >> From: [email protected] >> [mailto:[email protected]] On Behalf Of Rich Wild >> Sent: 06 December 2009 23:08 >> To: [email protected]; Coldfusion Development >> Subject: Re: [CF-Dev] Railo, Resin and large text variables = out of >> memory >> >> >- see footer for list info -< >> Hi Simon, >> >> I'm sure the theory is correct, but when I altered my script t use your >> StringBuilder, it ran out of memory much quicker than ever before. Going >> back to my original version e.g. >> >> xmlText = '' >> ..loop over query, building sub-xmlString.. >> xmlText &= subString >> >> resulted in a more efficient profile and no crash (prob thanks to my >> high-memory limit profile in the resin.cong file) >> >> But I'm interested to know why the stringbuilder approach resulted in an >> out-of-memory crash much quicker than before....? >> >> Rich >> >> 2009/12/6 Simon Baynes <[email protected]> >> >> > >- see footer for list info -< >> > >> > To be honest this something you should just get SQL server to do without >> > CFML. However, if you are definitely going down this path then there are >> a >> > few things you should know. In Java Strings are immutable this means >> that >> > you cannot change a string once it has been assigned. So if you do >> things >> > like:- >> > >> > <cfscript> >> > myString = "Simon"; >> > myString = myString & " Baynes"; >> > writeoutput(myString); >> > </cfscript> >> > >> > This doesn't actually update the variable but create a new variable in >> > memory that is the result of the second assignment. The old value will >> sit >> > in memory waiting to be Garbage Collected. I am sure you can now see >> that >> if >> > you are looping through a query doing loads of append statements then >> it's >> > going to create lots of information in memory. >> > >> > There is a Java class for this very type of operation called a >> > StringBuilder that manages this internally to reduce the memory usage. >> > >> > <cfscript> >> > oXml = createObject("java","java.lang.StringBuilder").init(); >> > oXml.append("Simon"); >> > oXml.append(" Baynes"); >> > writeoutput(oXml.toString()); >> > </cfscript> >> > >> > When using this for multiple append statements it'll save you lots of >> > memory! >> > >> > Having said that creating a 50Meg xml file will use at the very least >> 50Meg >> > of memory for that request which is not really what App Servers like >> Railo >> > or CF are for hence the advice of doing the whole job in SQL server. >> > >> > Hope that helps! >> > >> > Simon >> > Simon Baynes >> > www.simonbaynes.com >> > Free online storage you can access anywhere:- >> > http://www.simonbaynes.com/getsugarsync >> > LinkedIn profile:- http://www.linkedin.com/in/simonbaynes >> > >> > -----Original Message----- >> > From: Rich Wild <[email protected]> >> > Date: Sun, 6 Dec 2009 19:55:30 >> > To: Coldfusion Development<[email protected]> >> > Subject: [CF-Dev] Railo, Resin and large text variables = out of memory >> > >> > >- see footer for list info -< >> > Wotcha, >> > >> > I'm using Railo 3.1.2 + Resin 3.1 on an II6 Server. Its all been brill >> on >> > toast, thus far. >> > >> > Now, on this particular website, they have a requirement to build large >> XML >> > files produced from SQL Server databases. These XML files can be over >> 50Mb >> > in size. >> > >> > I'm running my SQL statements and building the XML using cfsavecontent >> > before saving out using cffile and zipping with cfzip. I figured >> producing >> > them as appended string variables as opposed to XML variables would save >> > time, processing and memory. >> > >> > However, I inconsistently get errors whilst building these files: >> > >> > Railo 3.1.2.001 Error (Java.lang.outofmemoryerror) - Java heap space >> > >> > Hmmm. That's not good. >> > >> > I tracked down the resin.conf file and changed >> > >> > <jvm-arg>-Xmx256m</jvm-arg> >> > to >> > <jvm-arg>-Xmx512m</jvm-arg> >> > >> > to try and increase the memory available. I still get the errors. >> > >> > Anyone have any clues how I can make this go away? I'm sure a comparable >> > CF8/9 server on the same hardware config machine wouldn't have this >> > problem. >> > They're not THAT big XML files. >> > >> > Cheers, >> > Rich >> > _______________________________________________ >> > >> > For details on ALL mailing lists and for joining or leaving lists, go to >> > http://list.cfdeveloper.co.uk/mailman/listinfo >> > >> > -- >> > CFDeveloper Sponsors:- >> > >- cfdeveloper Hosting provided by www.cfmxhosting.co.uk -< >> > >- Lists hosted by www.Gradwell.com -< >> > >- CFdeveloper is run by Russ Michaels, feel free to volunteer your help >> -< >> > >> > _______________________________________________ >> > >> > For details on ALL mailing lists and for joining or leaving lists, go to >> > http://list.cfdeveloper.co.uk/mailman/listinfo >> > >> > -- >> > CFDeveloper Sponsors:- >> > >- cfdeveloper Hosting provided by www.cfmxhosting.co.uk -< >> > >- Lists hosted by www.Gradwell.com -< >> > >- CFdeveloper is run by Russ Michaels, feel free to volunteer your help >> -< >> > >> _______________________________________________ >> >> For details on ALL mailing lists and for joining or leaving lists, go to >> http://list.cfdeveloper.co.uk/mailman/listinfo >> >> -- >> CFDeveloper Sponsors:- >> >- cfdeveloper Hosting provided by www.cfmxhosting.co.uk -< >> >- Lists hosted by www.Gradwell.com -< >> >- CFdeveloper is run by Russ Michaels, feel free to volunteer your help >> -< >> >> >> >> _______________________________________________ >> >> For details on ALL mailing lists and for joining or leaving lists, go to >> http://list.cfdeveloper.co.uk/mailman/listinfo >> >> -- >> CFDeveloper Sponsors:- >> >- cfdeveloper Hosting provided by www.cfmxhosting.co.uk -< >> >- Lists hosted by www.Gradwell.com -< >> >- CFdeveloper is run by Russ Michaels, feel free to volunteer your help >> -< >> > > _______________________________________________ For details on ALL mailing lists and for joining or leaving lists, go to http://list.cfdeveloper.co.uk/mailman/listinfo -- CFDeveloper Sponsors:- >- cfdeveloper Hosting provided by www.cfmxhosting.co.uk -< >- Lists hosted by www.Gradwell.com -< >- CFdeveloper is run by Russ Michaels, feel free to volunteer your help -<
