A common problem with profiling is that you have a method that usually runs at an acceptable time, but from time to time becomes a bottleneck.
Profiling the entire run will most likely not help you, as one slow call will be drowned out by all other regular calls.
In JProfiler, you can mark a method so that the exception of exceptional methods is stored separately, and you can examine the slowest operations in detail, you can use the statistics view of the method to see the distribution of calls and mark them to record the exceptional method:

In the call tree view, the slowest calls will be marked with the suffix [exclusive run], and you can examine their call tree individually:

Disclaimer: My company is developing JProfiler.
source share