0

オンラインゲーム用のasp.net asmxサービスを作成しています。運用サーバーのasp.netアプリケーションで実行すると、1.5〜3 GBのメモリが使用されます。

ANTS メモリ プロファイラを使用すると、アプリケーション メモリの 70% が空き、C# オブジェクトが 100 ~ 200Mb を使用することがわかりました。

asp.net が空きメモリを OS に返すようにするにはどうすればよいですか? 1 つのサーバーで同様のアプリケーションをいくつか実行すると、メモリ不足の例外が発生します。

使用されたテクノロジ: ASP.Net v4 Windows 2008 C# ハード データベース リクエスト用に使用された少量の asp.net キャッシュ。

4

1 に答える 1

1

残念ながら、これは可能です。ご存知かもしれませんが、CLR はヒープで 2 種類の参照オブジェクト、標準オブジェクト ヒープとラージ オブジェクト ヒープを使用します。標準オブジェクト ヒープはガベージ コレクターの後で最適化されますが、CLR チームがパフォーマンスの問題を引き起こすと判断したため、大きなヒープは最適化されません。そのため、LOH は使用中に大量のメモリを消費する可能性があります。

85000 バイトを超えるオブジェクトは LOH に割り当てられるため、コードを分析して LOH に割り当て可能なオブジェクトを見つけ、それらを小さくすることをお勧めします。

これが役立つことを願っています。ところで、現在これに対する 100% の解決策はありません。

于 2012-11-09T09:56:10.520 に答える