比较快照
将当前应用程序的运行时特性与以前的版本进行比较是一种常见的质量保证技术,用于防止性能回归。它也可以帮助解决单个分析会话范围内的性能问题,在这种情况下,您可能希望比较两个不同的用例,找出为什么一个比另一个慢。在这两种情况下,您保存包含感兴趣数据的快照,并通过从菜单中调用会话→在新窗口中比较快照或点击启动中心的比较多个快照按钮来使用JProfiler中的快照比较功能。
选择快照
比较是在一个单独的顶级窗口中创建和查看的。首先,您在快照选择器中添加多个快照。然后,您可以通过选择感兴趣的快照并点击比较工具栏按钮,从列出的两个或多个快照中创建比较。列表中快照文件的顺序很重要,因为所有比较都假设列表中较后的快照是在较晚的时间记录的。除了手动排列快照,您还可以按名称或创建时间对它们进行排序。
与JProfiler主窗口中的视图不同,比较视图具有固定的视图参数,这些参数显示在顶部,而不是让您动态调整参数的下拉列表。所有比较都显示用于收集比较参数的向导,您可以使用相同的参数多次执行相同的比较。向导会记住其以前调用的参数,因此如果您比较多个快照集,则无需重复配置。在任何时候,您都可以通过完成按钮快捷跳过向导,或通过点击索引中的步骤跳转到另一个步骤。
当比较处于活动状态时,分析的快照会显示带有数字前缀。对于使用两个快照的比较,显示的差异是快照2的测量值减去快照1的测量值。
对于CPU比较,您可以使用相同的快照作为第一个和第二个快照,并在向导中选择不同的线程或线程组。
表格比较
最简单的比较是“对象”内存比较。它可以比较堆行走器的“所有对象”、“记录的对象”或“类”视图中的数据。比较中的列显示实例计数和大小的差异,但只有实例计数列显示双向条形图,其中增加部分以红色向右绘制,而减少部分以绿色向左绘制。
在视图设置对话框中,您可以选择是否希望此条形图显示绝对变化或百分比。另一个值显示在括号中。此设置还决定了列的排序方式。
第一个数据列中的测量称为主要测量,您可以在视图设置中将其从默认的实例计数切换为浅层大小。
表格的上下文菜单为您提供了一个快捷方式,可以使用相同的比较参数和所选类进入其他内存比较。
像对象比较一样,CPU热点、探针热点和分配热点比较也显示在类似的表格中。
树状比较
对于每个CPU调用树、分配调用树和探针调用树,您可以计算另一个树,显示所选快照之间的差异。与常规调用树视图相比,内联条形图现在显示变化,增加部分以红色显示,减少部分以绿色显示。
根据手头的任务,如果您只看到在两个快照文件中都存在并且从一个快照文件更改到另一个快照文件的调用栈,可能会让您更容易。您可以在视图设置对话框中更改此行为。
对于CPU和探针调用树比较,比较平均时间而不是总时间可能会很有趣。这是向导的“视图参数”步骤中的一个选项。
遥测比较
对于遥测比较,您可以同时比较多个快照。如果您在快照选择器中未选择任何快照,向导将假定您要比较所有快照。遥测比较没有时间轴,而是将编号的选定快照显示为序数x轴。工具提示包含快照的完整名称。
比较从每个快照中提取一个数字。由于遥测数据是时间解析的,因此有多种方法可以做到这一点。向导的“比较类型”步骤为您提供了使用快照保存时的值、计算最大值或在选定书签处找到值的选项。