From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

画像ファイル読み込みによるメモリ不足エラーの対処方法

解決済み
解決策を見る

多量(100枚以上)の画像を読み込み、輝度値の最大値を取得するプログラムを作成したのですが、メモリ不足エラーが発生します。

 

タスクマネージャで確認したところ、LabVIEWのメモリ使用量が3GBになりエラーが吐き出されます(32bitのLabVIEWでは3GBが最大容量のようです:https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000PADVSA4&l=ja-JP)。

 

具体的な状況として、メインVIのForループ内にサブVIを設置し、サブVIの中で「PNGファイルを読み取る関数→ピックスマップを非平坦化→最大最小」によって最大値を読み取っています。

「PNGファイル読み取り・非平坦化・最大最小」を繰り返すたびにメモリ使用量が増加するので、解決したいと考えています。

最大値のみをメモリに残し、PNGファイル読み取りの出力ワイヤや非平坦化の出力配列で使用するメモリ容量をループのたびに削除したいのですが、具体的な方法を教えていただけますか。

 

メモリ解放要求ではメモリが解放できないようでした。

よろしくお願いいたします。

 

0 件の賞賛
メッセージ1/3
1,891件の閲覧回数
解決策
トピック作成者user_kbが受理

user_kb さん、はじめまして

 

3GBの制限は、LabVIEWに限らず、64bitOS上の32bitアプリケーションでの制限になりますね。

ちなみに問題のあるVIの共有は可能でしょうか。(もしくはスクショ)

手元でそれらしいものを作ったのですが、100枚以上読み込んでもメモリ利用率は一定程度で保たれていました。(Forループを置いたメインVIから、ご提示の処理3つのみを含んだサブVIを呼び出し。メイン側では最大値のみを取得し配列に格納)

 

どこかで読み込んだPNGデータを保持してしまっているのかと思います。

メッセージ2/3
1,830件の閲覧回数

回答ありがとうございます。自己解決しました。

 

ご指摘いただいた通り、ドライブに保存されている画像の読み込みを実装したところメモリ利用率は変わりませんでした。

どうやらデバイスで画像を取得した際にメモリが余分に使用されており、

PNG読み取りVIによりメモリ上でデータがコピーされることでますますメモリがひっ迫していたようです。

画像取得後にメモリを解放したところ無事解決しました。

 

回答ありがとうございました。

 

 

0 件の賞賛
メッセージ3/3
1,811件の閲覧回数