调用栈树提供了 3 大绝佳好处:
- 一个简化的视图
- 性能优化
- 准确的冒烟测试
下面我们就来详细聊聊吧。
1. 一个简化的视图
线程转储文件是某一指定时刻应用程序中所运行的所有线程的快照。转储文件线程中有数百甚至数千个应用程序线程。想要看完线程中的每一行栈信息记录,是非常困难的一件事。调用栈树会将所有线程栈追踪信息整合至一个树图中,并为您提供一个单一视图以进行展示。这就使您能够轻松查看其中的信息了。下方是由 fastThread.io 生成的示例调用栈树。

图 1:调用栈树
您可继续向下钻取以查看代码的执行路径。图 2 展示了调用栈树图中特定分支的下钻情况。

图 2:调用栈树下钻
调用栈树中展示了执行代码的类名、方法名、代码行以及线程数。

图 3:调用栈树中的单一元素
从上方调用栈树中的元素,我们可以看到 buggyCompanyCallable.java 中的 call() 方法被 9 个线程执行。
2. 性能优化
由最多线程执行的方法构成了应用程序的关键代码路径。调用栈树能够为您提供有关应用程序执行次数最多的方法的统计信息。我们观察到,在整体应用程序中有不到 5% 的方法占据了代码 90% 以上的执行时间。因此,如果您可以对这 5% 的方法进行优化,那么就能显著提升整个应用程序的性能,也就能实现最佳 ROI。
3. 准确冒烟测试套件
在进行冒烟测试时,您需要确保用到应用程序中的大部分关键方法。调用栈树能够为您提供有关应用程序执行次数最多的方法的统计信息。因此,调用栈树能帮助您创建目标明确的单元测试,从而执行关键方法,并使得应用程序在部署至生产环境中时更具鲁棒性。这种精确的测试套件能够减少测试的整体执行时间。还可缩短后端系统中测试数据的设置时间。您也可将此类测试集成至您的 CI/CD 管线中。
Leave a Reply