あるVB6.0の常駐GUIアプリケーションを作成しました。
機能としては主に以下のようなものがあります。
・自動ファイルの移動
・自動ファイル削除
ところがこのVBアプリケーションを常駐させておくと以下のような現象が起こります。
・ファイル移動処理や削除処理を行うとメモリの占有量が微妙に増える。そして増えたままになる(数KB程度)。
・処理を行わない間はメモリ占有量の変動はない。
・数百回処理を行ったあと(メモリ占有量が大幅に増えている状態)のGUIアプリケーションをマウスで通常ウィンドウ化→最小化を行うとメモリ占有量は初期値に近いところまで大幅に減る。
原因として以下のようなものを考えています。
・動的配列(Privateのプロシージャ内)の使用→Erase処理を行いましたが特に何も変化がありません。
・Function(Private)内の配列の使用→Erace処理をしていません。できれば触りたくない部分です。
以上を踏まえたうえでメモリ占有の原因と解決法をご存知の方がいらっしゃいましたらお教え下さい。
よろしくお願いします。
回答ありがとうございます。
確かにUBonud関数とLBonud関数は使用しておりました。そこで、UBonud関数とLBonud関数の使用を回避しましたが、メモリ占有量が増える現象はなくなりませんでした。
“数百回処理を行ったあと(メモリ占有量が大幅に増えている状態)のGUIアプリケーションをマウスで通常ウィンドウ化→最小化を行うとメモリ占有量は初期値に近いところまで大幅に減る。”
という点が本当の意味でのメモリリークではないことを示唆しているのかもしれません。