If you can, use jvisualvm in the Sun Java 6 JDK (IBM too). It works out of the box and can answer many of the initial questions.
Note that on Windows you need to invoke jvisualvm with the same Java binary as the program you want to investigate for best results.
(visualvm is a stand-alone subset of the Netbeans profiler)