This is an interesting post. apparently, the way Java installs, the JVM optimized for client usage (rather than server) is the default:
Amazing, then, isn't it, that most default installations of Java-based (as opposed to native-code implementations) J2EE containers don't make use of the VM tuned specifically for long-running server operations?
To fix this, if you can get at the command-line used to invoke the JVM, add the "-server" option into the command line parameters. If this is somehow hidden away from you, simply rearrange the options found in the jvm.cfg file in the JDK to list the "server" option first. Bear in mind, however, the comment at the top of the jvm.cfg file: this file format is subject to change and may use a different mechanism sometime in the future. (Case in point: the JDK 1.3 mechanism didn't make use of the keywords following each entry-KNOWN, ALIAS, and so forth.) Future J2SDK releases may change this mechanism, so be prepared to do a little spelunking when J2SDK 1.5 is released.
Now sure, it's easy enough to deploy VW servers badly - deploy an image without mucking about in MemoryPolicy and ObjectMemory, and you'll eventually get bitten. I guess what I'm curious about is, how many people even know about these sorts of server tuning, without regard to development tools?