TestStandで、多くの回数の繰り返しを行った際、なぜ、メモリー使用量は増加するのでしょうか?



使用ソフトウェア: TestStand
使用ソフトウェア・バージョン: 2.0
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A

問題:
繰り返し回数を多くした際はどのような場合においても、Teststandのメモリー使用量は、コンスタントに増加して最終的には、オペレーティングシステムが使用するメモリーが、実際にもっているメモリーを超えてしまいます。これはどのように防げばいいのでしょうか?


解決策:
概要を説明いたしますと、シーケンスの中で使用するループの繰り返し毎に、結果の収集に注意する必要があります。
これは、ループの繰り返しごとに、新しい要素がLocals.ResultListの配列に挿入され、繰り返しの結果ができるまで保持されるからです。
Locals.ResultList のサイズが増加するにしたがって、それに伴うTeststandのメモリー総量も増加します。
繰り返し回数が多いループを扱うときには、メモリー使用量は増える可能性があります。
このような事象が発生させる要因となる状況は二つあります。ひとつは特定のステップでループを行う場合と、ループを行うのに”Goto”ステップを使用した場合です。このようなことは、下記の事項を行うことで解消できる可能性があります。

1.ループの”result collection ”を無効にする。
セットアップするループオプションでこれを行います。

ステップループオプションを使用している場合、"各ループの結果を記録" オプションを無効にする必要があります。
これを行うには、ステップを右クリックしてプロパティを選びます。
ループオプションタブをクリックして、"各ループの結果を記録" のチェックを外します。単純に実行オプションタブの”結果を記録”のチェックを外すことは、メモリーの増加を防ぐクコとは出来ません。

Gotoステップを使用している場合は、ループの中の各ステップで結果の記録を無効にする必要があります。これは、Gotoステップ自身もこの必要があります。
これを行うには、ループ内の各ステップ内で右クリックし、プロパティを選びます。実行オプションのタブをクリックして”結果の記録”のチェックをはずします。

注意:レポート生成の無効(構成»ロギングオプション»ロギング無効)では、TestStandのデータの収集を無効化させることは出来ません。これを行っても、Locals.ResultListに、空のレポートが生成されます。

2.オンザフライによるレポートの作成
別の言葉で言い換えると、ステップごとに、データのアップデートと削除を行い最後の要素のみが ”Locals.ResultList”に残ることになります。Teststand2.0の中に、オンザフライでレポートを作成するプログラム例が、”\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/31/2007
ドキュメントID: 2DB7OMVW