Our current project has a heavy emphasis on throughput and latency, and our team spent a good amount of time building up the infrastructure to be able to performance test our application. We’re currently in the middle of performance tuning, and got to a point where garbage collection is a significant enough problem for us to start looking at options. I’ve never really had to do this low level tuning before and it’s amazing to see how many options you can tweak. Here’s a few links I’ve found that have been helpful. Please leave a comment if you think there’s more that would be of use and I’ll update the list.

  • Tuning Garbage Collection for Java 5 – A good background and explanation about some of the basic concepts and terms you need to understand before tuning.
  • Hotspot FAQ – A long list of questions (some of them quite funny too), with some decent answers.
  • HotSpot Options – A list of all (?) configurable parameters related to behaviour, performance and debugging.
  • BEA recommendations for garbage collection – A simple example of what values you might consider setting for a production application server.
  • A summary for JDK1.4.2 options – Providing a brief summary for an older version of the JVM.
  • List of all JVM options for Java 6 – Apparently a more complete list of options for Java 6.
  • Another list of JVM options – Though I’m not sure how up to date this one is. The author also makes mention that the list was compiled with Solaris OS in mind.
  • Blog entires about tuning – A blog detailing greater performance tuning options and details about some of them.

Please note that we’re using Sun’s JVM in production, and hence performance tuning against that JVM.