Also, I am almost positive that Replace() is creating another string variable under the hood, which means in this nested loop that could be a huge number of new CF string variables, depending on how many iterations you're doing.
<cfset fileOutput.append (replace(START_FIELD,"___COLNAME___",ThisCol,"ALL"))> On 10/11/07, Mark Mandel <[EMAIL PROTECTED]> wrote: > > Maybe replace the > <cfset fileOutput.delete(0,fileOutput.length())> > > With: > > <cfset fileOutput.setLength(0)> > > It would probably take less processing. > > Mark > > On 10/11/07, Rick Root <[EMAIL PROTECTED]> wrote: > > I'm trying to discover why a piece of code that I run causes my JVM > > memory usage to go up about 400MB. > > > > I'm using CF8... I'm not sure how to debug this. > > > > Basically I've got an event gateway request that generates an excel > > file (via HTML tables). I do a lot of string appends and i'm using > > the java stringbuffer method. > > > > Some of the memory usage is the query - in my test case, the CF8 > > server monitor says the query is about 50 megabytes. > > > > But obviously, something I'm doing in the looping through that query > > is sucking up memory. > > > > Here's a simplified example of the code in the loop... fileOutput is a > > java StringBuffer object.. the purpose of using the StringBuffer is > > because string concatenation in CF is very slow when done in high > > quantities. > > > > > > <cfloop query="resultSet"> > > <cfset fileOutput.append(START_ROW)> > > <cfloop list="#fields#" index="ThisCol"> > > <cfset fileOutput.append > (replace(START_FIELD,"___COLNAME___",ThisCol,"ALL"))> > > <cfset fileOutput.append( resultSet[ThisCol][ > resultSet.currentRow] )> > > <cfset fileOutput.append(END_FIELD)> > > </cfloop> > > <cfset fileOutput.append(END_ROW)> > > <cfif currentRow MOD 500 is 0> > > <cflog log="APPLICATION" text="Looping, currentrow = > #currentRow#"> > > <cflog log="APPLICATION" text="Writing data to file, > length: > > #fileOutput.length()#"> > > <cfset fileWrite(fh, fileOutput.toString())> > > <cfset fileOutput.delete(0,fileOutput.length())> > > </cfif> > > </cfloop> > > > > The total file size, when the job is complete, is about 84 megabytes. > > At the time the fileWrite() call takes place, the fileOutput variable > > contains about 3,000,000 characters (3mb) > > > > Anyone got any ideas here? > > > > > > -- > > Rick Root > > Check out CFMBB, BlogCFM, ImageCFC, ImapCFC, CFFM, and more at > > www.opensourcecf.com > > > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Download the latest ColdFusion 8 utilities including Report Builder, plug-ins for Eclipse and Dreamweaver updates. http;//www.adobe.com/cfusion/entitlement/index.cfm?e=labs%5adobecf8%5Fbeta Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:290905 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4

