I wrote an article about how VisualVM helped fixing a problem I had on my day job at TTY Internet Solutions some time ago. The CPU load on a webserver became to high and the performance of the webapplication dropped ofcourse.
Now, with JMX (Java Management Extensions) you can (remotely) connect to a JVM (Java Virtual machine) and take a look at what’s going on in that JVM. A great tool to do this is VisualVM. In the article I explain how we setup JMX on the remote server, how we connected VisualVM, how we read the info VisualVM gave us and how it helped us find and fix our bug.