2017年7月25日火曜日

C#:画像ファイルをいろいろ扱っていたらOutofMemoryエラー出る場合の対処法

100ページ超のマルチページTiffファイルを解析するプログラムを稼働させているとメモリ使用量がどんどん上がっていき、4つほどファイルを読んだらメモリオーバーで落ちてしまうという減少に随分前から悩まされてきました。その解決策がようやく判明。
GC.Collect();
GC.WaitForPendingFinalizers();  
GC.Collect();
というように、ガーベージコレクションを発動させるだけでなく、赤字の処理を追記したほうがいいらしいです。GC.Collect()で挟むと良いようです。いままでGC.Collect()しか記述してなかったです。ググると既知のTIPSのようですね。

プログラムでは、OpenCVSharpを使ったりしているので、そのあたりのバグかな~とか思ったりもしましたが違いましたね。おかげで、メモリ使用量が全く増えることなく稼働できています。

0 件のコメント:

コメントを投稿