¿Por Qué el Uso de Memoria en TestStand Incrementa con el Tiempo Cuando Estoy Ejecutado Ciclos que Iteran un Número Considerable de Veces?



Software Primario: NI TestStand
Versión de Software Primario: 2.0
Versión de Software Primario Corregido: N/A
Software Secundario: N/A

Problema:
Cuando utilizo ciclos que iteran muchas veces, el uso de memoria de TestStand se incrementa constantemente hasta que llega un momento que causa que el sistema operativo se quede sin memoria y se bloquea. ¿Cómo puedo evitar esto?

Solución:
En general, cada vez que usted utilize un ciclo en su secuencia debe de tener mucho cuidado con la recolección de resultados. Esto se debe al hecho de que en cada iteración del ciclo, un nuevo elemento con los resultados es agregado al arreglo Locals.ResultList. Como Locals.ResultList incrementa en tamaño, en consecuencia la cantidad total de memoria que este arreglo requiere se incrementa, que a su vez, se ve reflejado en la cantidad de memoria que requiere TestStand. Existen dos situaciones en particular en las cuales usted puede estar experimentando este comportamiento: Utilizar la opción de ciclado en un paso en particular, o utilizar el paso de Goto para implementar un ciclo. Para evitar este problema usted puede intentar lo siguiente:
  1. Deshabilite la recolección de resultados del ciclo. Dependiendo del tipo de la opción de ciclado que usted haya configurado. (ej. Opciones de ciclado de paso (step loop), o utilizando pasos de Goto para desarrollar el ciclo) usted necesitará hacer lo siguiente:

    • Si usted está utilizando las opciones de ciclado en el paso (step loop), usted necesita deshabilitar la opción de “Record Results for Each Iteration”. Para poder hacer esto, de clic derecho en el paso, y seleccione la opción de propiedades. Dirijase a la pestaña de Loop Options y deshabilite la opción de “Record Results for Each Iteration”. Si usted simplemente deshabilita el guardar los resultados (record resutls) en la pestaña de Run Options no prevendrá el uso de memoria.

    • Si usted está utilizando un paso de Goto para generar el ciclo, usted necestia deshabilitar la opción de guardar resultados en cada uno de los pasos que se encuentran dentro del ciclo, incluyendo el paso de Goto. Usted puede lograr esto dando clic derecho en cada paso de los que se encuentran dentro del ciclo y seleccionar la opción de propiedades. Dirijase a la pestaña de Run Options y desahabilite la opción de “Record Result”.

    Nota: Deshabilitando la generación de reportes desde Configure»Report Options»Disable Report Generation no prevendrá que TestStand recolecte los resultados y los siga agregando al arreglo de Locals.ResultList a pesar de que no se vaya a generar el reporte.

  2. Otra opción es la de generar el reporte “On the fly”. En otras palabras, se actualiza el reporte después de que cada paso se ejecuta y se elimina el último elemento del arreglo Locals.ResultList después de cada paso. En TestStand 2.0.x existe un ejemplo que crea reportes en esta modalidad “On the fly” que se encuentra localizado en: <TestStand> \ Examples \ OnTheFlyReports. Dentro de este directorio también hay un archivo de Word llamado OnTheFlyReports.doc que describe detalladamente la operación de este ejemplo. Este ejemplo también está disponible en internet, revise las ligas de la sección de ligas relacionadas.


Ligas Relacionadas:
Knowledge Base 2MRBTCY6: Memory Leaks with TestStand and LabWindows/CVI
Knowledge Base 2E4G44VW: When Should I Use mallocFuncPtr, freeFuncPtr, and replaceStringFuncPtr?
Developer Zone Example: Setting Up Report Generation On the Fly (As You Go) for TestStand

Archivos Adjuntos:





Día del Reporte: 09/12/2001
Última Actualización: 06/30/2012
Identificación del Documento: 2DB7OMVW