I want to run my Java app and for a given workload be able to see:
If you are willing to spend a little money,
JProfiler: http://www.ej-technologies.com/products/jprofiler/overview.html
is very good, it shows you % of time used, absolute time used, and # of invocations down to the method level. It understands EJB calls, web service calls, and will even show the SQL of jdbc calls. I use it frequently to find performance issues.
It has memory profiling too, but I find the cpu profiling much more useful.