2010-11-26 20 views
0

グリッドビューとソートとページングを組み合わせた更新パネルがあります。IIS + Ajax UpdatePanelの結果、メモリ使用量が極端に増加する

私はワーカープロセス(W3WP)のメモリ使用量を監視するために、タスクマネージャに入る

私は何をやっていることは、急速にソートボタンの上だけをクリックしています。それぞれに

だから私はおよそ90に30メガバイトのメモリ使用量から行くおよそ2メガバイト

とプロセス増加のメモリをクリックするとそこ遺跡で停止し、何のメモリが解放されません。私はキャッシュやセッション/アプリケーションの状態を使用していません。

これを引き起こしている可能性があるのは、IISにmemの使用を減らすための設定ですか?ので、他の86何のために使用され、4メガバイト???: -

は、私も自分のアプリのメモリ使用量を調べるために、.NETのプロファイラを使用しましたタスクマネージャーでは4MBをレポートしますが、これは90MBだと言います。残りの部分はIISによって何らかの形で使用されなければならない管理されていないメモリだと私は考えています。

+0

これは単なるajaxの問題ではありません。私はこれを他のウェブサイトでもテストしました。メモリも同じように上がっていますが、それほど急峻ではありません。たとえば、要求ごとに400〜500kbとしましょう。 – Tomasi

+0

Aはテストを行いました。セッション状態はなく、viewstateはなく、SQL Serverはなく、xmlファイルはgridviewとupdatepanelでした。メモリ使用量は20から70になり、戻ってこない:http://rapidshare.com/files/433269321/ajaxtest.rar – Tomasi

+0

plz誰かが私が投稿したプロジェクトをテストする、その緊急発行 – Tomasi

答えて

0

問題は実際にはGridViewであり、UpdatePanelではありません。そのレコードはViewStateに格納されるため、1回のポストバックごとに前後に渡されます。また、並べ替えボタンをすばやくクリックすると、データを並べ替えるための複数の要求が生成されます。ソートの実装方法に応じて、クリック要求ごとにソートするためにレコードセットを複製することができます。

ASP.NETアプリケーションをホストするだけであるため、「メモリ使用量を削減する」という設定はIISにはありません。アプリケーションでは、独自のメモリに関する問題に対処する必要があります。

大量のデータをソートすることは、リソースを大量に消費するプロセスになります。あなたの最善の策は、ソートボタンがクリックされた後にソートボタンを無効にして、データがソートされたらソートボタンを再び有効にすることです。

+0

.netプロファイラを使って自分のアプリを調べるメモリの使用量:4メガバイト、他の86は何のために使用されますか? – Tomasi

+0

ViewStateはサーバー上のメモリを消費しません。 ViewStateをメモリ内で動かすカスタムViewStateの処理をしていない限り、ViewStateによる一定のメモリ消費量の増加は見られません。 – Stilgar

+1

@diamandiev GridViewは内部的にデータをViewStateに格納しますが、そうしないと明示的に設定しない限り、データを並べ替えることはできません。 @Stilgar ViewStateはSessionのようにサーバー上にメモリを保持しませんが、ポストバック中にViewStateがリクエストと共に返されます。要求のViewStateにアクセスするために、要求の存続期間中メモリに格納されます。 – bitxwise

0

.NET GCは非決定的です。つまり、実行する必要があると判断するたびに実行されます。たとえば、Page_InitイベントでGC.Collect()を明示的に呼び出すと、メモリがまだ増加しているかどうかを確認できますが、実際のアプリケーションからGC_Collect()を削除するほうが効果的です。

+0

私はあなたの提案を行い、メモリ使用量は半減しました。しかし、ガベージコレクタは、各要求の終了後にメモリをクリアしないのはなぜですか? - – Tomasi

+0

GCは、それが気に入っている場合に限り、常に実行されます。しかし、あなたが本当に投稿のようにしたい場合は、コレクションを強制することができます。 – JonVD

+0

Application.EndRequestイベントを処理し、GC.Collect()を呼び出すモジュールを作成していますか? – Tomasi

関連する問題