Does anyone know what is the current state of the art of profiling tools is? I recently had the opportunity to use JProfiler, a JVM profiler, for my work. It provides the same functionality Spacetime provides and much more. One of the big differences is JProfiler attaches to a running process, so you can interact with the application while profiling it. Similar to Spacetime you can inspect what objects are currently filling up memory and the stack traces that generated those objects. JProfiler also lets you poke around the heap and see what objects a given object points to, and what objects point to a given object. One JProfiler feature I found particularly useful was being to visualize the state of each and every thread over time (at what times each thread is busy/idle/waiting on i/o). This allowed my team to find the bottleneck in our a system. We were able to see that all of the threads of a particular thread pool were almost always waiting on i/o, and discovered the thread pool wasn’t sized properly.