The title asks the crux of the question. Additionally, if there's some pretty graphics in JProfiler that illustrate whether a slow app is CPU, Memory, or Network-bound then I would like to know that as well.
I suspect that RTFM would help but it's TL;DR. However, I am running JProfiler and trying to stumble into the solution.
I can see thread activity for the app under measurement and, yes, there are occasional blue spans of network I/O idling for a few of the working threads -- but hardly enough to account for the extensive network communication that the app is in the midst of performing.
Is there then a way to see, in addition to the hotspot statistics for code that is run on the CPU, how that CPU time compares with overall wallclock time and its relation to network and memory usage time?
The CPU call tree and hot spots views have a thread selector in the top-right corner. By default it's set to "Runnable", but you can change it to "Net I/O" and compare the call tree or the hot spots for the different thread states.