Profiling makes it possible for developers to track down in what code their application spends its time.
Check out this Eclipse plugin for profiling Java applications. Looks really good. Remote profiling for example on Tomcat is also possible.
See here for installation notes and screenshots
At first glance it works quite well, allthough I didn’t get the Thread Call Graph working. But the comment by Birch below solved that!
Of course I have to mention that JDeveloper has out of the box Profiling ( see here)