调用跟踪器 (Call Tracer)
调用树中的方法调用记录累积具有相同调用栈的调用。保持精确的时间顺序信息通常不可行,因为内存需求巨大,并且记录的数据量使任何解释变得相当困难。
然而,在有限的情况下,跟踪调用并保持整个时间顺序是有意义的。例如,您可能希望分析多个协作线程的方法调用的精确交错。调试器无法逐步执行此类用例。或者,您希望分析一系列方法调用,但能够来回查看,而不仅仅像在调试器中那样只看一次。JProfiler通过调用跟踪器提供此功能。
调用跟踪器有一个单独的记录操作,可以在调用跟踪器视图中激活,使用触发器或使用profiling API。为了避免过度的内存消耗问题,对收集的调用跟踪的最大数量设置了上限。该上限可以在视图设置中配置。收集的跟踪率在很大程度上取决于您的过滤器设置。
只有在方法调用记录类型设置为插桩时,调用跟踪才有效。采样不跟踪单个方法调用,因此从技术上讲无法通过采样收集调用跟踪。对紧凑过滤类的调用在调用跟踪器中记录,就像在调用树中一样。如果您只想关注自己的类,可以在视图设置中排除这些调用。
跟踪的方法调用显示在一个具有三个级别的树中,这使得通过折叠它们更容易跳过相关调用。这三个组是
在最低级别,有
默认情况下,跟踪和所有分组节点上显示的时间指的是第一个跟踪,但可以更改为显示自上一个节点以来的相对时间。如果上一个节点是父节点,则差异为零。还可以选择显示相对于同类型上一个节点的相对时间。
即使使用适当的过滤器,也可以在很短的时间内收集大量的跟踪。为了消除不感兴趣的跟踪,调用跟踪器允许您快速修剪显示的数据。例如,某些线程可能不相关,或者某些包或类中的跟踪可能不感兴趣。此外,递归方法调用可能占用大量空间,您可能只想消除那些单个方法。
您可以通过选择节点并按删除 (delete)
键来隐藏节点。所选节点的所有其他实例和所有关联的子节点也将被隐藏。在视图顶部,您可以看到所有记录的跟踪中仍显示了多少调用跟踪。要再次显示隐藏的节点,您可以单击显示隐藏
(Show Hidden)工具栏按钮。