运行迭代次数大的循环时TestStand内存使用率增加

更新 Mar 30, 2023

适用于

软件

  • TestStand 2016 SP1
  • TestStand 2016
  • TestStand 2014 SP1

问题详述

每当我在TestStand中使用迭代次数大的循环时,TestStand的内存使用量就会不断增加,并最终导致操作系统内存不足。如何避免这种情况?

解决方案

通常,每次在序列中使用循环时,都需要注意结果收集。这是由于以下事实:在循环的每次迭代中,都会将一个新元素插入Locals.ResultList数组变量中,该变量将保存该迭代的结果。随着Locals.ResultList大小的增加,TestStand使用的总内存量也会增加。当处理迭代次数较大的循环时,此内存使用量的增加可能会很大。在几种情况下,您可能会遇到此行为:在特定步骤上使用Loop Option,或使用Goto步骤来实现循环。为避免此问题,您可以:

  1. 禁用循环的结果收集。根据您设置的循环选项的类型(例如,步骤循环选项或使用Goto步骤实现循环),您将需要执行以下操作之一:

  • 如果使用步进循环选项,则需要禁用“Record Results for Each Iteration”选项。为此,请右键单击该步骤,然后选择“Properties  。单击“Loop Options”选项卡,然后取消选中“Record Results for Each Iteration”选项。仅在“运行选项”选项卡下禁用记录结果不会阻止内存使用量的增加。

  • 如果使用的是Goto步骤,则需要禁用循环内每个步骤的结果记录,包括Goto步骤本身。您可以通过右键单击循环中的每个步骤并选择Properties来完成此操作。单击“Run Options”选项卡,然后取消选中“Record Result”选项。

  1. 即时生成报告。换句话说,执行每个步骤后,将更新报表,并删除Locals.ResultList的最后一个元素您可以选中“Configure»Result Processing” ,然后单击“报告”插件的“选项”按钮。在“报告选项”对话框中,启用“On-The-Fly Reporting”选项。您还应该选择Configure»Model Options,并启用选项Discard Results 或 Disable Results when not Required by Model,以确保将结果添加到报告后从内存中删除。

相关信息

通过选择“ Configure»Result Processing”并取消选中Report plugin的Enabled checkbox (Configure»Report Options»Disable Report Generation in TestStand 2010 and previous)来禁用报告生成不会阻止TestStand收集结果。即使没有生成报告,项目仍将添加到Locals.ResultList中