TDMS書き込みでメモリ使用量が増える

更新しました Mar 12, 2019

使用製品

ソフトウェア

  • LabVIEW Full
  • LabVIEW Professional
  • LabVIEW Base

問題

TDMS書き込みVIを実行するたびに、メモリ(RAM)使用量がわずかに増加します。これはメモリリークですか?また、メモリ使用量の増加を防ぐにはどうすればよいですか?

解決策

この問題を解決する方法は、いくつかあります。
 

  • 標準のTDMS APIを使用して一度に複数のチャンネルのデータを書き込む場合は、これらのチャンネルに同じ順序で同じ数のデータ値を書き込む必要があります。
     
  • TDMSファイルに保存する前に、チャンネルのNI_MinimumBufferSizeプロパティを設定します。このプロパティの設定例は、Minimum Buffer Size Example.viとして添付されています。これにより、メモリの増加速度が遅くなります。詳細については、LabVIEWヘルプ: TDMSを開く 関数を参照してください。
     
  • 長期間データを連続して保存する場合は、ロギングセッションを複数の短いセッションに分割することをお勧めします。たとえば、1時間ごとにデータを新しいTDMSファイルに記録することで、データを複数のTDMSファイルに書き込むことができます。短いロギングセッションを使用すると、メモリの増加を抑えることができます。
     
  • ロギングセッション全体が完了したら、各TDMSファイルを最適化してから、それらを1つの大きなファイルにまとめることができます。
     
  • 旧バージョンを使用している場合、TDMSコンポーネントを最新バージョンにアップグレードするとメモリの増加を抑えることができますが、この問題を完全に排除することはできません。

追加情報

TDMSストリーミングAPIを使用する場合、TDMSを開くVIを使用して読み書きを行います。TDMSファイルにデータを書き込むと、TDMS APIはキャッシュをメモリに保持します。これにより、ファイル内のデータにランダムにアクセスすることが簡単になります。TDMSを使用して継続的にデータを保存するアプリケーションの場合、この挙動がメモリリークのように見える原因です。