2011-07-06 12 views
0

私はwcfサービスを持っており、私は同じ設定値を以下に使用しています。未使用のバッファを解放しないWCF

maxItemsInObjectGraph="2147483647" 
maxBufferPoolSize="2147483647" 
maxReceivedMessageSize="2147483647" 

私のサービスがメモリを占有していることを除いて、すべてがうまく動作します。私は問題を絞り込んだので、メモリが大量に占有されている理由は、未使用のバッファサイズを解放していないためです。私はそれにdefalt値を使用すると、あまりにも多くのメモリなしで正しく動作します。

未使用スペースをサービス請求できる方法はありますか?

答えて

0

私はあなたがこれらの設定は、あなたの問題の原因である、とあなたはメモリ使用量を決定するために探しているもの、そしてどのくらいの時間、どのように多くのリクエストあなたはそれを実行してみましょうにわたって決定方法として興味があります。

カップルリクエストの後にOutOfMemory例外が発生しますか?これらのバッファが完全に割り当てられ、解放されませんされていた場合は、メモリ不足になりまでには約2または3の要求を取るよう2147483647のバイトは、2ギガバイトであることを

注意。

理由がないため、メモリがGCしていないと確信していますか?ヒープスペースが利用可能であり、一定の閾値以下であれば、時間を費やす理由はほとんどありません。


編集:

またこれらの作成バッファやオブジェクトのサイズに基づいて、異なるメモリ使用量が表示されます。 Some of this is outlined here.基本的に.netは85,000バイト以上のオブジェクトを 'large'として扱い、それらを別々に圧縮します。

また、メモリ例外が発生したり、実際にメモリが足りなくなった場合は、おそらく問題はありません。 「異なる」メモリー使用量が「間違っている」という意味ではありません。アプリケーションをロードして、実際にメモリが不足しているかどうかを確認する必要があります。これは実際のメモリリークを示します。さもなければ、最大ヒープ・ジェン・サイズに近づき、それからGCのすべてに近づくまでメモリを構築するだけかもしれません。

+0

これらの数字は問題です。私はmaxBufferPoolSizeが唯一の問題だと言っているわけではありません。私はそれを0に変更し、私はまだ同じ問題を抱えていました。 maxReceivedMessageSizeとmaxItemsInObjectGraphをチェイングした後、メモリの消費量は安定しています。 – Asdfg

+0

編集やリンクを追加しました。 – CodingWithSpike

+0

メモリのピークに達すると、他のコールがタイムアウトします。 – Asdfg

関連する問題