The project of U-WA-
http://uwa.potetihouse.com/
トップページ > 過去ログ > 記事閲覧
アイコン TKFP.DLLの送信時メモリについて
日時: 2008/01/11 16:12
名前: FTP初心者

お世話になります。

VB2005にて、利用させていただいています。

一定時間毎(2秒程度)に小さいファイル(12Kb程度)をアップロードしています。
1時間位で、20M程度メモリを消費し、プログラムを終了させると解放します。
色々あたってみましたが、ftpへのアップロード部分で起きているようです。

下記により、アップロードは可能ですが、メモリをアップロード毎に消費しているようです。(と思います。)
'ファイルをサーバーへ送信します。
file.ReadFrom(localPath)
これのメモリを解放する事はできますか。



Page: 1 |

ファイル Re: TKFP.DLLの送信時メモリについて ( No.1 )
日時: 2008/01/11 23:55
名前: Toki◆pRU.c9X.EOI

ご報告ありがとうございます


メモリリークの件ですが、送信時のソースを一度確認してみます。

他の原因として、ガベージコレクタが回収せずに放置している可能性がありませんか?
20M程度だとプログラムで開放しても、ガベージコレクタが改修しない可能性があります。


ファイル Re: TKFP.DLLの送信時メモリについて ( No.2 )
日時: 2008/01/12 10:57
名前: FTP初心者

お世話になります。

アップロード後にGCの解放を行いましたが、変わりませんでした。
メモリは、転送毎に増えていきます。中止・停止するとそのメモリ消費量は、止まります。
1回に12KBを2秒後に送るため、その分累加されます。

file.ReadFrom(localPath)
の後にGC解放を入れています。場所等が問題でしょうか?

意図的にアップロード部(上記コード)のみをダミーにすると、メモリの占有は止まります。
ファイル Re: TKFP.DLLの送信時メモリについて ( No.3 )
日時: 2008/01/13 23:59
名前: Toki◆pRU.c9X.EOI

色々と確認してみたところTKFPの内部通信ログクラスが
通信毎にメモリを消費することはわかりましたが、
それ以外では確認できませんでした。

また、ファイル情報の内部キャッシュによってメモリを消費する場合もあるようですが、
こちらは増加しつづけることは無いようです。


可能であれば次の様に処理を追加してみてください

・TKFP.IO.FileInfoのインスタンスを送信ごとに作成する
・定期的にTKFP.Net.FtpClientを切断しインスタンスを再生成する
・定期的に内部の通信ログをクリアする (FtpClient.MessageLog.Clear)
・定期的に内部のリストキャッシュをクリアする (FtpClient.ListCacheRefresh)


私の環境では通信ログのクリアだけで、メモリの消費はなくなりました
ファイル Re: TKFP.DLLの送信時メモリについて ( No.4 )
日時: 2008/01/15 15:18
名前: FTP初心者

お世話になります。

メモリの解放を通信ログのクリアーで確認できました。
ありがとうございました。

Page: 1 |