On the topic of profiling, this is something I was going to write about a few weeks ago.
If you Google for 'Eclipse profiling', at the time of writing this the first Google page mentions the open-source, all-but-abandoned Eclipse Profiler (I blogged about it last year).
Only at the bottom of the page is there mention of the Eclipse project's own profiling tool, from the TPTP (Test and Performance Tools Platform) project (full name of the profiling sub-project: TPTP Tracing and Profiling Tools Project, which thankfully hasn't been abbreviated to TPTP TPTP). It seems to have next to no mindshare, and not just because nobody can remember what its name is.
The TPTP used to be known as the Hyades project and I think many people stayed away from it because it just looked too complicated to actually do anything useful with it. Extra downloads, a heap of dependencies, cryptic documentation and a half-hearted link to a set of slides from some conference explaining how it all worked. I know that was the case with me. However, I finally sat down and worked my way through the setup docs, and wasn't too hard to get going. The real treat was starting to use it. I'll just say that the TPTP profiler is just plain sex-ay (with a 'grrr'). So far, it's solid, it's powerful, it's documented, and above all, it's straightforward to use.
I haven't played much with the memory profiling, and I haven't used the separate profiling agent, but the method analysis is brilliant. Not only do you get the usual 'amount of time in this method' sort of information, but there's a graphical tool which shows your call stack on a time line, to get a visual cue of what your program is doing and how long methods are running for (across multiple threads, including GC... heaven!). You have detailed per-method stats and time line graphics, and something else which is partly eye candy but can also be really handy - your call tree can be displayed as a UML sequence diagram - inter-object and inter-thread.
Well worth checking out.