CF9 + JRUN = 1.19GB RAM usage. Safe?
Related Categories: Coldfusion
Just to give you a little background on my situation.
I've inherited a very old CF site that's coded very very badly.
Recently, we had a severe crash and let's just say we upgraded the whole box.
We went from 2GB Ram and CF8 to 4gb Ram and CF9 on a Win2k3 R2 box running IIS6.
We've had some crashes after that regarding the JVM OutOfMemory Garbage Collecting.
I've since, tweaked the JVM startup and it's stable so far.
My question is this: jrun.exe is pinned at 1.19GB ram right now. Is this sorta high? The site is very well trafficked. We sustain anywhere from 200-700 people at a time at all hours of the day.
I'm wondering if there's something else I can do to help minimize the ram usage of jrun. Not even sure it's even necessary, but I wanted to throw this question out there to the CF universe :)
Thanks for your input!

32-bit or 64-bit?
What is your -Xmx and -Xms arguments set at for CF?
And...when you inherited it, did you happen to see any glaring "memory-leak"-ish holes out of the gate that you repaired, and if so, what kind were they?
I tweaked the Maximum JVM Heap Size to 1024MB from 512MB (default).
These are my JVM startup arguments:
-server -Dsun.io.useCanonCaches=false -XX:MaxPermSize=192m -XX:+UseParallelGC -Dcoldfusion.rootDir={application.home}/../ -Dcoldfusion.libPath={application.home}/../lib -XX:-UseGCOverheadLimit
I don't have anything specified for -Xmx or -Xms. Any tips for these options? (and what are they too?)
As far as memory leakage, I didn't even monitor to know :(
If the app constructs a hefty amount of CFCs, you may want to consider pushing the Maximum Heap up further (2048m) so that the JVM has plenty of memory to store them, rather than constantly running out of memory and having to flush the cache to make room for more CFCs, which is Disk I/O, which is a performance loss.
This isn't a long-term solution, though--this is a band-aid.
Regarding the memory leaks, this question was more a kind-of "eyeballing" of the code, rather than using a memory monitor.
Since you have CF9 which is 64bit in both standard and enterprise version I would VERY HIGHLY recommend running a 64bit OS. It really helps when running large application that need more memory.
What does your
# Arguments to VM
java.args=
state?
You can just remove the xms argument so that the jvm does not always hold memory.
Although at 1.1 gig this looks like something the app is doing.
My Mura CMS server as sitting at 200meg.
What you need to do is go into the Server Monitor and start Memory tracking and then look at all the scopes and variables. Turn it off when you have it figured out.