This talk was from a couple Sun guys and looked at a bunch of tools that are available for performance monitoring and debugging. The tools they talked about were:
- dtrace – dynamic fine-grained instrumentation tracing, works kernel all the way up
- Sun Studio collector/analyzer – some tools that give good visualization, are based on sampling and have good Java integration
- jps, jinfo, jstack – part of the JDK, allow you to get info on running Java processes, vm properties and args, and thread dumping all in a remote way with minimal overhead
- BTrace – a tool that can attach remotely and insert dynamic tracing to a running Java app, kind of like dtrace but scripts in Java
- GCHisto – a new tool for analyzing and comparing GC profiles with different GC settings
- jmap<, jhat – in the jdk, tools for monitoring memory, getting memory dumps, etc
- jconsole – monitoring via jmx
- VisualVM – plugin-oriented visual tool to tie together many other performance and visualization tools, including the Terracotta plugin!
I think the key things I found interesting in this talk were the BTrace and GCHisto tools which were new to me and looked like they could be very interesting. The BTrace example of dynamically attaching to a JVM and installing a probe to dump SQL statements and timings was a good one and I think if you had some idea what you were looking for, this would be a fantastic tool. GCHisto seemed to be great for comparing a load with a variety of GC settings, which is always challenging.
The other key tip was that jhat is really the only tool that can give you heap information for debugging permgen problems.