- Collapse recursions
A recursion is detected when the same method was already called higher up in the call
stack.
In that case, the sub-tree is removed from the call tree and stitched back to the
first invocation of that
method. That node in the call tree is then prefixed with a label showing the number
of recursions.
Below that node, stacks from different depths are merged. The number of merged stacks
is shown as a prefix
on each node.
Note that for a simple recursion, the number of merged stacks is the number of recursions
plus one. So
a node prefixed with "1 recursion" would contain a tree with nodes that are prefixed
with "2 merged stacks".
In more complex cases, recursions are nested and produce overlapping merged call trees,
so that the number
of merged stacks varies from stack depth to stack depth.
At the point where a sub-tree is removed from the call tree to be merged higher up,
a special
moved nodes
placeholder is inserted.
This analysis uses the same view settings as the call tree view
- Calculate cumulated outgoing calls
In the regular call tree, you can only see a method's outgoing calls for one particular
call stack.
If you are interested in the sum of all outgoing calls, regardless of how the method
was invoked, the
"Calculate cumulated outgoing calls" analysis solves this problem.
For the selected method, all its top-level invocations, i.e. not considering recursive
calls of that method,
are cumulated and shown in the result tree. The header shows how many such top-level
call sites were
summed in that process.
At the top of the view, there is a check box that allows you to collapse recursions
in the result tree, similar to the
"Collapse recursions" analysis.
This analysis uses the same view settings as the call tree view
- Calculate backtraces to selected method
This analysis complements the "Calculate cumulated outgoing calls" analysis. Like
the latter, it sums
all top-level calls of the selected method without considering recursive calls. However,
instead of showing
outgoing calls, it shows the back traces that contribute to the invocations of the
selected method. The call
originates at the deepest node and progresses toward the selected method at the top.
This analysis is similar to the hot spots view, only that by
default it sums total times instead of self times for the selected method, and the hot spot view only shows methods
whose self time is a significant fraction of the total time.
At the top of the view there is a radio button group labeled "Time summation mode"
that can be set to
"Self times like in hot spot view". With that selection, the summed values for the
selected method match that
of the hot spots view.
In the back traces, the invocation counts and times on the back trace nodes are only
related to the
selected method. They show how much the invocations along that particular call stack
have contributed to
the values of the selected method.
Just like for the "Calculate cumulated outgoing calls" analysis, there is a check
box at the top of the
view to collapse recursions in the result tree.
This analysis uses the same view settings as the hot spots view