As a member of the team working on the Java implementation here at IBM, I'm lucky enough to have access to some extra resources that are very useful. For example, if a Java application I wrote isn't behaving as I expected, I can have a look inside some parts of the Java implementation code, and try and work out what's going on as my application runs. If that doesn't help, I can go and sit at the desk of someone who really knows the Java implementation code, because they wrote it!
Unfortunately, most of our customers aren't so fortunate. In IBM, we've been thinking a lot about how we can help, by providing more information about the implementation 'black box' to the outside world.
The team I'm in at the moment have been developing a tool - IBM Monitoring and Diagnostic Tools for Java - Health Center. The Health Center tool provides live diagnostic information about the VM, and helps you identify some bottlenecks that can occur in your application. This information is gathered with a low overhead, so there is almost no impact on your application.
The kind of information you can get from Health Center includes method profiling, GC details, locking information, class loading, and details about the JVM environment. Here's a screenshot of the profiling information to whet your appetite:
In the next blog post I'll explain a bit more about the profiling view, and how you can use it to track down inefficiencies in your Java applications.In the meantime, more information is available from the developerWorks Java technology diagnostics tools page