반복횟수가 매우 큰 루프를 돌릴 때 TestStand의 메모리 사용이 증가하는 이유



주요한 소프트웨어: TestStand
주요한 소프트웨어 버전: 2.0
문제가 해결된 소프트웨어 버전:
부차적인 소프트웨어:

문제점:
반복횟수가 매우 큰 루프를 돌릴 때, TestStand의 메모리 사용이 꾸준히 증가하다가 결국 OS의 메모리 부족 현상을 발생시킵니다. 이를 피하려면 어떻게 하나요?

솔루션:
일반적으로, 시퀀스에서 루프를 사용할 때는 결과 수집에 주의해야한다. 이는 루프를 돌릴 때마다 Locals.ResultList 배열에 새 원소가 추가되기 때문에 일어나는 현상이다. Locals.ResultList의 크기가 증가하면 이에 따라 TestStand가 차지하는 전체 메모리양도 증가한다. 반복횟수가 매우 큰 루프를 다룰 때, 이런 메모리 증가는 매우 심각한 문제가 될 수 있다. 이런 현상을 경험하기 쉬운 두 가지 상황이 있다: 특정 스텝에서 Loop 옵션을 사용할때나 루프 동작을 하기 위해 Goto 스텝을 사용할 때. 이런 문제를 해결하기 위해:

  1. 루프의 결과 수집을 비활성화한다. 지정된 루프 옵션의 타입에 따라(스텝의 Loop 옵션을 사용했는지, Goto 스텝을 썼는지에 따라) 다음 둘 중 하나를 하시오:

    • 스텝 Loop 옵션을 썼다면, "Record Results for each iteration" 옵션을 비활성화하시오. 스텝을 오른쪽 클릭하고, Properties를 선택한다. Loop Options 탭을 클릭하고 "Record Results for each iteration"을 비활성화하시오. Run Options 탭의 "Record Results"를 비활성화하는 것만으로는 메모리 증가현상을 막을 수 없다.

    • Goto 스텝을 사용하고 있다면, Goto 스텝 자신을 포함한 루프 내의 각 스텝들의 결과가 레코딩되지 못하도록 해야한다. 루프 내의 각 스텝들에서 오른쪽 클릭하고 Properties를 변경함으로써 이렇게 할 수 있다. Run Options 탭을 클릭하고 "Record Result"를 비활성화 하시오.


    주의: 보고서 작성을 비활성화(Configure»Report Options»Disable Report Generation)하는 것 만으로는 TestStand가 결과를 수집하는 것을 막지 못한다. 보고서가 작성되지 않더라도 Locals.ResultList에 아이템이 추가될 것이다.

  2. 레포트를 동작 중에 생성하시오. 즉, 각 스텝이 실행된 후에 레포트를 업데이트하고 Locals.ResultList의 마지막 원소를 지우도록 하시오. TestStand 2.0.x에는 레포트를 동작 중에 생성하는 예제가 있다(\Examples\OnTheFlyReports). 이 폴더에는 OnTheFlyReports.doc라는 파일이 있어서 이 예제의 기능을 설명해준다. 이 예제는 또한 웹을 통해서도 받을 수 있다. 아래 링크를 참고하시오.


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

첨부:





리포트 날짜: 09/12/2001
마지막 업데이트: 12/20/2007
문서 번호: 2DB7OMVW