The project of U-WA-
http://uwa.potetihouse.com/
トップページ > 過去ログ > 記事閲覧
アイコン [TKMP]でOutOfMemoryException
日時: 2012/07/26 13:30
名前: ういんぐ

TKMP 3.0.1を使用しています。
長時間(1、2日)使用していると以下のようにOutOfMemoryExceptionが発生します。

種類 'System.OutOfMemoryException' の例外がスローされました。
場所 TKMP.Net.PopClient. (String& )
場所 TKMP.Net.PopClient.Connect()

以下にサンプルのソースを記載します。

//サーバーのIPアドレスを取得
System.Net.IPAddress address = System.Net.Dns.GetHostEntry(server).AddressList[0];

//ログオン情報設定
TKMP.Net.IPopLogon logon = new TKMP.Net.BasicPopLogon(userid, pass);

//POP3接続設定
TKMP.Net.PopClient pop = new TKMP.Net.PopClient(logon, address, port);

//接続
if (pop.Connect()) {
メール処理
pop.Close();
}

以上の処理を定期的に実行します(1分間隔くらい)

よろしくお願いします。

Page: 1 | 2 |

ファイル Re: [TKMP]でOutOfMemoryException ( No.1 )
日時: 2012/07/27 07:12
名前: Toki◆pRU.c9X.EOI

TKMPではTKMP.Net.PopClientクライアントが解放されると、
関連するクラスのインスタンスはすべて解放されます。

定期的にガベージコレクトを行ってはどうでしょうか?
ファイル Re: [TKMP]でOutOfMemoryException ( No.2 )
日時: 2012/07/27 10:14
名前: ういんぐ

コメントありがとうございます。

> 定期的にガベージコレクトを行ってはどうでしょうか?

実際にはテスト用のソースでは以下のように GC.Collect()が呼ばれています。

GC.Collect();
if (pop.Connect()) {
if (pop.MailDatas.Length > 0) {
//先頭ヘッダ情報の読み出し
TKMP.Net.MailData Mail = pop.MailDatas[0];
}
pop.Close();
}

タスクマネージャーで見ていると、1回の処理で20〜80kbくらいずつメモリが増えていきます。
従って、ループを続けるといつかはOutOfMemory状態になるものと思われます。

よろしくお願いします。

Page: 1 | 2 |