仮想メモリーの断片化やメモリー不足の問題が多数発生しており、3GBの制限を超えています。web.configのデバッグ=真実=悪いことは?
コンパイルデバッグはweb.configではtrueに設定されていますが、私は尋ねるすべての人から異なる回答を得ます。デバッグをtrueに設定すると、各aspxがRAMのランダムな領域にコンパイルされ、メモリの問題?
仮想メモリーの断片化やメモリー不足の問題が多数発生しており、3GBの制限を超えています。web.configのデバッグ=真実=悪いことは?
コンパイルデバッグはweb.configではtrueに設定されていますが、私は尋ねるすべての人から異なる回答を得ます。デバッグをtrueに設定すると、各aspxがRAMのランダムな領域にコンパイルされ、メモリの問題?
AFAIK "debug = true"あなたが言及した状況を引き起こしません。
私は、オンザフライで画像を作成したASP.NETアプリケーションで同じ問題に直面しました。
だから、私はあなたがリソースを廃棄することに問題があると思います。
コードビハインドファイルを使用してaspxファイルをサーバーに展開する場合。これは、要求がaspxに来ると一度コンパイルされます。ファイルが変更されるまでキャッシュに格納されます。
実際にアプリケーションをデバッグする必要がない限り、web.configではデバッグフラグをfalseに設定する必要があります。
デバッグモードで実行すると、メモリ使用量が多少増加する可能性がありますが、お話ししているほど深刻な問題はないようです。ただし、それが持つ効果を除外するためにはfalseに設定し、改善が見られるかどうか確認する必要があります。
デバッグモードで実行すると、ガーベジコレクションが異なる動作をします。変数のライフタイムは、実際の使用量から変数のスコープまで(デバッガの値を表示できるように)拡大されます。これにより、オブジェクトがガベージコレクションされる前に、オブジェクトの存続期間が長くなります。
デバッグモードでコンパイルするときにコンパイラがコードを最適化しないで、さらに余分なnop
命令が追加され、各コード行にブレークポイントを配置できる命令が少なくとも1つあります。
例外をスローすると、デバッグモードでかなりの時間がかかります。 (ただし、通常、コードは例外をスローすることはありません)。
Scott Guthrie(ASP.NET開発チームのマネージャ)はinteresting post about itです。デバッグを残してはならない理由
最も重要なポイント=「true」を、次のとおりです(一部のバッチの最適化が無効になっているので)
彼はまた、マシン上で実行されているすべてのアプリケーションのデバッグ=「true」のフラグを上書きグローバルすることを可能にするのmachine.config内のフラグ<deployment retail=”true”/
>を、言及(例えばプロダクションサーバー上)。
更新:あなたはScott Hanselman's recent blog postで読むことができるようdebug="true"
でWebアプリケーションを展開することは、まだ悪いです:
デバッグ= "真" が悪い理由はここにあります。真剣に、我々は冗談ではない。
重要な点:時々信じられていることとは対照的に、要素内でretail = "true"を設定することは、debug = "true"を持つことに対する直接的な解毒剤ではありません!
本稼動システムでは、常にDebug = falseを設定します。フラグが示唆しているように、開発システムをデバッグする場合にのみtrueに設定する必要があります。
このフラグは、メモリの断片化の問題とは関係ありません。
メモリには絶対に影響する可能性があります。perfmonカウンタの一部を見て、両方の設定を比較してみてください。
サイトに多くのファイルがある場合は、asp.net tempフォルダのdisk ioにもっと関心があります。
カップルの質問を...
なぜ複数の設定を使用しないのですか?
Web.Debug.Configは - Web.UAT.Configオンデバッグがあります - しているデバッグは
あなたが開発者のような回帰設定エラーを最小限に抑えることができるこの方法をオフに - どちらがお好み Web.Release.Config
私の会社では、すべてのプロダクションWebサーバにmachine.configにデプロイタグが設定されているという標準的なポリシーがあります。これは、多くの頭痛を和らげます。 – Chris