There have been several blog posts recently about class-loading issues apparently linked the use of the Sun-Java 1.6 (6.0) JVM. Mark Mandel has a detailed article on this here.
Before seeing this article we had been working on optimizing a ColdSpring-ModelGlue-Reactor application. We blogged our progress in this article. We thought a reality check was a good idea and ran some load tests comparing this same application performance in Java 1.5 and 1.6. Once again we observed better performance in 1.6; here are the results. These results are for a 50 Virtual User (vUser) Test for 1 hour with 8 second think time (delay between clicks) comparing Java 1 5 to 1.6.
Firstly Java 1.5
Total Number of Clicks: 13,345 (0 Errors) Average Click Time of all URLs: 5,298 ms
Secondly Java 1.6
Total Number of Clicks: 15,563 (0 Errors) Average Click Time of all URLs: 3,348 ms
As we observed before, Java 1.6 performs better in load tests than Java 1.5 and this includes instantiation time. Here are two graphs which show the same behavior…
In these two 3D graphs, the more users that are the left axis of the graph, the better. In the 1.5 version, most users are in the middle right part of the graph, whilst in the 1.6 version there are more users in the left part.
One thing we are saying here is to load-test all applications before deployment, ideally across different environments and particularly before down grading to an earlier version of anything. In addition, consider the base architecture of all applications, at the end of all that we do, user experience is paramount, users have no interest or concern as to what coding paradigms we use.