>- 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 -<