<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: ColdFusion 8 ClassLoader bug less prevalent on cold starts?</title>
	<atom:link href="http://www.ghidinelli.com/2008/07/01/coldfusion-8-classloader-bug-less-prevalent-on-cold-starts/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ghidinelli.com/2008/07/01/coldfusion-8-classloader-bug-less-prevalent-on-cold-starts</link>
	<description></description>
	<pubDate>Thu, 20 Nov 2008 13:07:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>By: Elliott Sprehn</title>
		<link>http://www.ghidinelli.com/2008/07/01/coldfusion-8-classloader-bug-less-prevalent-on-cold-starts#comment-49437</link>
		<dc:creator>Elliott Sprehn</dc:creator>
		<pubDate>Wed, 16 Jul 2008 14:45:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.ghidinelli.com/?p=204#comment-49437</guid>
		<description>@Brian

The former (ie lifetime of the JVM). As far as I know the bug is down in the belly of the JVM in some dependency checking code written in C++.

So yeah, if you can restart the server the hit isn't nearly as bad as it would be if you had to warm restart.

Of course that still depends on how fast your machine is and how much RAM you have. Even a cold start can be painfully slow if you generate enough classes, or your hardware isn't that great.</description>
		<content:encoded><![CDATA[<p>@Brian</p>
<p>The former (ie lifetime of the JVM). As far as I know the bug is down in the belly of the JVM in some dependency checking code written in C++.</p>
<p>So yeah, if you can restart the server the hit isn&#8217;t nearly as bad as it would be if you had to warm restart.</p>
<p>Of course that still depends on how fast your machine is and how much RAM you have. Even a cold start can be painfully slow if you generate enough classes, or your hardware isn&#8217;t that great.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: brian</title>
		<link>http://www.ghidinelli.com/2008/07/01/coldfusion-8-classloader-bug-less-prevalent-on-cold-starts#comment-49428</link>
		<dc:creator>brian</dc:creator>
		<pubDate>Wed, 16 Jul 2008 08:59:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.ghidinelli.com/?p=204#comment-49428</guid>
		<description>@Elliot - In terms of the class loader, is it over the lifetime of the JVM or are we talking about the classes that CF has currently generated and loaded?  If the former, then that explains why the reinit is slower than the initial startup even when performed immediately on load.  This just goes to further solidify that the initial load of CF applications on JVM 1.6 in production aren't a problem if you can bounce the server.  On the cold start it's only mildly slower than my CF7 install.</description>
		<content:encoded><![CDATA[<p>@Elliot - In terms of the class loader, is it over the lifetime of the JVM or are we talking about the classes that CF has currently generated and loaded?  If the former, then that explains why the reinit is slower than the initial startup even when performed immediately on load.  This just goes to further solidify that the initial load of CF applications on JVM 1.6 in production aren&#8217;t a problem if you can bounce the server.  On the cold start it&#8217;s only mildly slower than my CF7 install.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Elliott Sprehn</title>
		<link>http://www.ghidinelli.com/2008/07/01/coldfusion-8-classloader-bug-less-prevalent-on-cold-starts#comment-49426</link>
		<dc:creator>Elliott Sprehn</dc:creator>
		<pubDate>Wed, 16 Jul 2008 07:33:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.ghidinelli.com/?p=204#comment-49426</guid>
		<description>@Brian

That's not how the class loader bug works. The more classes you load, the worse it gets.

So when CF first starts not a lot of classes have been loaded, so not a big deal. But as you restart your applications that generates more and more classes, over and over again.

CS and MG generate *tons* of classes, one for every single CFC and method on each of those CFCs for the entire framework.

The modelglue/unity/framework/ModelGlue.cfc alone generates 43 classes.</description>
		<content:encoded><![CDATA[<p>@Brian</p>
<p>That&#8217;s not how the class loader bug works. The more classes you load, the worse it gets.</p>
<p>So when CF first starts not a lot of classes have been loaded, so not a big deal. But as you restart your applications that generates more and more classes, over and over again.</p>
<p>CS and MG generate *tons* of classes, one for every single CFC and method on each of those CFCs for the entire framework.</p>
<p>The modelglue/unity/framework/ModelGlue.cfc alone generates 43 classes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: brian</title>
		<link>http://www.ghidinelli.com/2008/07/01/coldfusion-8-classloader-bug-less-prevalent-on-cold-starts#comment-49425</link>
		<dc:creator>brian</dc:creator>
		<pubDate>Wed, 16 Jul 2008 07:26:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.ghidinelli.com/?p=204#comment-49425</guid>
		<description>@Elliott - the times quoted above are wrapped specifically around the Coldspring startup and the Model-Glue instantiation.  While it does clear the trusted cache, I think the times above should be analogous to a cold restart in terms of class generation. Restarting CF is the equivalent to clearing the trusted cache AFAIK.</description>
		<content:encoded><![CDATA[<p>@Elliott - the times quoted above are wrapped specifically around the Coldspring startup and the Model-Glue instantiation.  While it does clear the trusted cache, I think the times above should be analogous to a cold restart in terms of class generation. Restarting CF is the equivalent to clearing the trusted cache AFAIK.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Elliott Sprehn</title>
		<link>http://www.ghidinelli.com/2008/07/01/coldfusion-8-classloader-bug-less-prevalent-on-cold-starts#comment-49424</link>
		<dc:creator>Elliott Sprehn</dc:creator>
		<pubDate>Wed, 16 Jul 2008 07:18:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.ghidinelli.com/?p=204#comment-49424</guid>
		<description>"Clears trusted cache via Admin API"

I'm reasonably sure that right there is why the warm reinit is slamming you so hard. 

The classes aren't already loaded after clearing the trusted cache, instead CF dumps all the classes loaded into memory and reloads every single one of them.

There's a class generated for every .cfm and .cfc file, and another one for every UDF in your entire application. 

Try running these reinit's over and over again. I have a feeling they'll get slower and slower with each one.</description>
		<content:encoded><![CDATA[<p>&#8220;Clears trusted cache via Admin API&#8221;</p>
<p>I&#8217;m reasonably sure that right there is why the warm reinit is slamming you so hard. </p>
<p>The classes aren&#8217;t already loaded after clearing the trusted cache, instead CF dumps all the classes loaded into memory and reloads every single one of them.</p>
<p>There&#8217;s a class generated for every .cfm and .cfc file, and another one for every UDF in your entire application. </p>
<p>Try running these reinit&#8217;s over and over again. I have a feeling they&#8217;ll get slower and slower with each one.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tim Elsner</title>
		<link>http://www.ghidinelli.com/2008/07/01/coldfusion-8-classloader-bug-less-prevalent-on-cold-starts#comment-49060</link>
		<dc:creator>Tim Elsner</dc:creator>
		<pubDate>Wed, 02 Jul 2008 15:50:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.ghidinelli.com/?p=204#comment-49060</guid>
		<description>I dont have any hard numbers, but I'm pretty sure I'm experiencing the same thing on my MG site. With CF7, I had no problems deploying new code during the day by doing a reinit. Ever since the switch to CF 8, I wait until after hours and restart CF to deploy new code.

I've thought about trying to tune the JVM, but have not found the time yet.</description>
		<content:encoded><![CDATA[<p>I dont have any hard numbers, but I&#8217;m pretty sure I&#8217;m experiencing the same thing on my MG site. With CF7, I had no problems deploying new code during the day by doing a reinit. Ever since the switch to CF 8, I wait until after hours and restart CF to deploy new code.</p>
<p>I&#8217;ve thought about trying to tune the JVM, but have not found the time yet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan G. Switzer, II</title>
		<link>http://www.ghidinelli.com/2008/07/01/coldfusion-8-classloader-bug-less-prevalent-on-cold-starts#comment-49058</link>
		<dc:creator>Dan G. Switzer, II</dc:creator>
		<pubDate>Wed, 02 Jul 2008 14:28:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.ghidinelli.com/?p=204#comment-49058</guid>
		<description>@Brian,

If you have a large number of objects, I suspect the slow down may be due to memory management. If the JVM's being forced to do several garbage collections during the reinit stage, that could explain for the difference in performance.</description>
		<content:encoded><![CDATA[<p>@Brian,</p>
<p>If you have a large number of objects, I suspect the slow down may be due to memory management. If the JVM&#8217;s being forced to do several garbage collections during the reinit stage, that could explain for the difference in performance.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
