5

「メモリ不足の例外」が発生しているプロジェクトがあります。このメモリリークの問題をデバッグしようとしています。問題は、実稼働マシンには約1〜2 GBのメモリがあり、開発マシンには6GBがあることです。そして、クラッシュを再現するのは非常に難しいと感じています。

Visual Studioで、デバッグインスタンスに割り当てることができるメモリの量を減らす方法はありますか?

4

1 に答える 1

2

マシンのRAMの量は、OutOfMemoryExceptionとは関係ありません。プロセスが仮想メモリを使い果たし、割り当て要求に適合するのに十分な大きさのアドレス空間の穴を見つけることができない場合、その例外が発生します。これは通常、プロセスのVMサイズが32ビットマシンで1.5GBに近づき始めたときに発生します。

仮想メモリスペースの量を制限するのは簡単です。プログラムの開始時にbyte[]配列の束を作成し、それらを静的変数に格納するだけです。これはメモリリークの診断にはまったく役立ちません。例外をすばやくトリップするだけです。メモリプロファイラーを使用して、実際の問題を見つけます。

そして、これがリークではない可能性を考慮してください。ガベージコレクタでリークするのはそれほど簡単ではありません。しかし、プログラムの処理と大量のデータの保存の副作用にすぎません。これは64ビットオペレーティングシステムで簡単に解決でき、ページングファイルの最大サイズによってのみ制限される大量の仮想メモリスペースを提供します。RAMではありません。

于 2012-07-12T10:01:11.423 に答える