For those of you that continue to experience hangs and massive slowdowns running CFB on Windows 7 64bit, the one thing I found that made all the difference in the world is to have Eclipse use the jvm.dll rather than javaw.exe (the default). I’m using the CFB plugin into Eclipse, but I suspect this may also apply to CFB standalone on Win7 64bit as well. No amount of configuration changes, switching between 32 and 64bit JVM/Eclipse or disabling of features made any difference to the significant performance problems I was continuing to experience UNTIL I explicitly had Eclipse start up using the dll (forcing the JVM to load within the Eclipse process).
I also found that simply adding the –vm argument to the eclipse.ini apparently doesn’t work when trying to specify a specific JRE to use (at least on my machine); regardless of the existence of this argument in the ini file, it will still always fire up C:\Windows\System32\javaw.exe, which is where the problems I was seeing are (high CPU utilization, memory consumption). Not sure why that argument is ignored, perhaps a path issue, but I found that the only way I could be certain that I could run Eclipse with a specific JRE was to invoke Eclipse with the –vm command line argument.
I removed all my old JRE installs and installed the most recent 64bit JRE to C:\Java\64bit\.
What didn’t work:
I first tried updating eclipse.ini with:
-vm C:\Java\64bit\jre6\bin\javaw.exe
but found that Eclipse was still invoking the C:\Windows\System32\javaw.exe for some reason. Eclipse started of course, and the javaw.exe process started going bananas again every time I would try to edit a file and *change the value of an html input tag* of all things – as soon as I changed the input value by adding one letter (even before saving) the javaw.exe process would immediately start eating cpu and memory, and I could repeat this problem consistently across multiple files. Eclipse would hang, and I’d have to forcibly kill it as it would never recover.
I then tried invoking Eclipse with the command line –vm argument, like so:
D:\eclipse\eclipse.exe -vm C:\Java\64bit\jre6\bin\javaw.exe
leaving all the other arguments alone in the ini file; now, I could see that it was definitely using this particular javaw.exe but had exactly the same behavior I described above, edit a file (local filesystem, not network just to clear that it isn’t network related) and javaw.exe freaked out and Eclipse hung until forcibly killed.
I then tried changing the –vm argument in the eclipse.ini file to:
-vm C:\Java\64bit\jre6\bin\server\jvm.dll
When Eclipse started it still had fired up javaw.exe in the Windows system32 directory as above. Whatever.
What worked:
Finally, I invoked Eclipse using the command line –vm argument pointing to the JRE’s jvm.dll, like so:
D:\eclipse\eclipse.exe -vm C:\Java\64bit\jre6\bin\server\jvm.dll
and holy crap, it runs great. Responsive, no appreciable sluggishness, I even turned a bunch of the code assist and insight features back on in light of how great it works now. Because javaw.exe isn’t running I have seen none of the problems I had when using the default invocation. I don’t understand why this option isn’t talked about more (I recall seeing only one reference to it in all the stuff I read), nor why it works better for me than the default javaw.exe but I’ve been running it all day now and it has been working terrific so far.
So, if you’re on Win7 (or maybe even Vista) 64bit, have a 64bit JVM and 64Bit Eclipse and are seeing crappy performance or stability, try this method and see if it doesn’t solve your problems. Off now to uninstall IntelliJ and Komodo trials ….
#1 by Mark Kruger - January 27, 2012 at 7:39 AM
#2 by Kevin J. Miller - January 29, 2012 at 12:14 AM
#3 by Brett - February 1, 2012 at 8:19 AM
Thanks Kevin.
#4 by Brett - February 22, 2012 at 11:07 AM
#5 by atomi - February 25, 2012 at 10:27 AM
Check out Sublime Text and my CF package https://github.com/SublimeText/ColdFusion A little rough but at least it's not slow. Hope all is well :)
#6 by Adam Cameron - September 29, 2012 at 12:30 AM
Which version of CFB were you trying this on? I just tried it on my 2.0.1 stand-alone install, and it seemed to work fine for me. Maybe this has been fixed in 2.0.1?
--
Adam
#7 by Kevin J. Miller - September 30, 2012 at 8:35 AM
I'm using CFB 2.0.1.282422 plugin on Eclipse 3.7.1 64 bit, 64 bit Java 7, Windows 7, and I just tried again by removing ensuring the eclipse.ini reflected the command line arguments I was using and the result is the same, it ignores the jvm.dll override in eclipse.ini and invokes javaw.exe to run Eclipse.
I'm confirming this in two ways:
- Task Manager processes, I can see javaw.exe created and destroyed upon Eclipse startup/shutdown
- Within Eclipse, Help > About Eclipse Platform, Installation Details, Configuration; Eclipse appears to always add the javaw.exe vm declaration if you do NOT override it as a command line argument when starting up Eclipse; it's almost as if Eclipse says 'oh, no -vm specified in the command line? ok, inject -vm path/to/javaw.exe regardless of what's in eclipse.ini'.
Anyway, at least with the CFB plugin on the platform I stated above, I see no difference in behavior from my original post. You may be right about the standalone having been 'fixed', but after all the #@(*#$&_#($! around I've done with this, I'm pretty skittish about wanting to jump back into it again.
Thanks for the continued input though. I think it's still an issue that Adobe needs to address on Windows.