普通のString変数にTimerコンポーネントを使って、文字列をどんどん入れて
いくコードを書きました。
これがかなりメモリを喰っているようでして。
ルーチンの終了を待たず、途中で変数内を空にする方法がありますでしょう
か?。
よろしくお願いします。
空文字('')を代入すれば?
とはいえ、これでちゃんとメモリ領域まで開放されるかどうかわかりませんけど。
あとは、あまりにメモリが多くなってしまうようならば、別の方法を考えてみるのもありかもしれません。
(圧縮するとか、ファイルに保存するとか、無駄を省くとか)
タイマーでそんなにメモリを使ってしまうとなると、ちょっと深刻かもしれません。
レス、ありがとうございます。
今作っているのがタイマーで0.2秒毎に他アプリを監視するソフトなのです
が、Win2000のタスクマネージャで見てみると、どんどんメモリ容量が多く
なっていきます。1時間ほっておいたら30,000kbまで膨らみました。
私はプログラムの経験が浅いのですが、やはり、このようなソフトは良く
ないですよね。
やはり監視方法を再検討するべきな気がしてきました。
> 1時間ほっておいたら30,000kbまで膨らみました。
それは、どこかでメモリリークしているんじゃないでしょうか?
いくらなんでも、20メガ以上の文字列変数をタイマーで使うということは考えられませんし…。
MemCheckなどのモジュールを使ってみてはどうでしょうか?
http://www.yks.ne.jp/~hori/
メモリリークですか。。
お恥ずかしながら、今回、初めて知った用語です。
さっそく試して、コードを見直してみます。
ありがとうございました。
ツイート | ![]() |