5

これは Windows サーバー 2008 R2、64 ビット、32 GB RAM で、IIS 7.5 を実行していると思います。4 つのワーカー プロセスを使用するようにアプリケーション プールを設定しました。

これは ASP.NET 4 アプリケーションですが、32 ビット互換モードで実行されています。

メモリ使用量がワーカー プロセスあたり 650 ~ 700 MB を超えると、oSystem.OutOfMemoryException が発生します。

最大 2 GB または少なくとも 1.5​​ GB を問題なく処理できるはずだと思いましたか?

もう 1 つ、System.OutOfMemoryException が発生したときにワーカー プロセスをリサイクルしないのはなぜですか?

更新:このアプリケーションは、IIS6.0 を搭載した 64 ビット Windows Server 2003 上で完全に正常に動作します。最大メモリ使用量が約 700mb/ワーカー プロセスであることを確認しました。

更新:メモリ使用量が多い理由は、DOM を使用した XML 処理です。それを修正するための作業を開始する予定ですが、それは長期的な計画です。650 mb を超えることができないのは奇妙だと思います。

4

3 に答える 3

4

取得するより一般的な理由System.OutOfMemoryExceptionは、メモリの断片化によるものです。メモリに十分な大きさの連続スペースがありません。それを確認するには、メモリ プロファイラーをインストールする必要があります。その後、どのオブジェクトがメモリを占有しているかを調べることもできます。

可能であれば、.NET 4.5 をテストすることをお勧めします - Microsoft はガベージ コレクターに変更を加え、LOH がサーバー アプリケーション (IIS など) に対して自動的に最適化されるようにしました: http://blogs.msdn.com/b/dotnet/archive /2011/10/04/ラージ オブジェクト ヒープの改善-ネット-4-5.aspx

于 2013-02-19T16:58:35.640 に答える
1

最大値を確認しましたか。taskmanager を調べたときに現在割り当てられているメモリだけでなく、割り当てられたメモリですか?

最大だから。割り当てられたメモリは、実際に予約されているため使用されるメモリです。

このような例外の一般的な原因は、ページ化されていないデータグリッドに表示される大きな DataTable です。

于 2013-02-20T06:39:38.143 に答える