线程转储文件往往会有几百行代码(有时会有几千行)。由于其十分冗长,所以我们很难了解其中的所有信息。由 fastThread 工具生成的火焰图能够将这些信息压缩成一个紧凑的图表格式。其能帮助您快速识别热门代码路径(hot code path)。在本文中,我们将了解如何使用 fastThread 工具生成火焰图,从而有效进行调试和故障排除工作。
如果您想学习如何根据 Java 线程转储文件生成火焰图,可参考本文。
fastThread 火焰图功能
以下是由 fastThread 程序生成的火焰图关键特征:
1. 鼠标悬停信息:
栈追踪信息由一列方框表示,其中每个方框表示一个函数(栈帧)。在鼠标移动至方框上时将展示提示信息。其中将展示已执行代码的类名、方法名和代码行。更重要的是,其中还会展示正在执行此行代码行的线程数。
示例:
com.buggycompany.framework.concurrent.buyggycompanyCallable.call(buggycompanyCallable.java:82), thread count: 2467)

图:鼠标悬停时生成的指示被执行代码行的工具提示
2. 火焰图颜色
方框的背景颜色没有进行突出展示,但会随机填充为暖色。这样的随机填充有助于双眼对各个方框进行区分,尤其是对于相邻较窄的“塔”形结构。
3. 方框宽度
方框的宽度取决于线程数。如果宽度足够,则其中会展示完整的函数名称。如果不够,那么会显示带有省略号的截断函数名,或者不显示任何内容。
4. 点击缩放
点击方框时,火焰图会水平缩放。这将展示更多细节,通常是子函数的函数名。

图:点击方框将会缩放火焰图
放大之后,如果您想缩小返回值原始图表,则可以点击图表右上角的“重置缩放”。

图:点击“重置缩放”会将您带回原始火焰图
5. 搜索
线程转储文件中出现的所有函数名、类名以及包名都可搜索。图表右上角有一个搜索框,如下图所示。

图:火焰图中的搜索框
在搜索框中,您可以输入函数名、类名、包名甚至线程转储文件栈追踪信息中的行号。任何匹配的方框都会以紫红背景颜色突出显示。如果您想仅搜索应用程序代码,则可输入程序包名(如:com.mycompany…)
Leave a Reply