2016-05-31 16 views
4

Windowsアプリケーションをメモリ不足の状態でテストしたいのですが、これを行う最も簡単な方法は、メモリを必要とする別のアプリケーション(コンソールアプリケーション)を作成することです。別のアプリケーションをテストするためにメモリをどうやって使うことができますか?

私はこのモンスター作成しました:

while (true) 
{ 
    try 
    { 
     Marshal.AllocHGlobal(1024); 
    } 
    catch{} 
} 

をしかし、それは唯一の3.7ギガバイトに行きます。私はこのアプリケーションの別のインスタンスを開き、それは戻ってきます。

ガベージコレクタが割り当てを収集しないようにするにはどうすればよいですか?

または:ユニバーサルウィンドウアプリケーションでメモリ不足の状態をテストするにはどうすればよいですか?

+0

あなた自身のアプリを書く必要がありますか、そこにいくつかのフリーウェアがあります。例えば[TestLimit](https://live.sysinternals.com/WindowsInternals/) - [使用方法]に関するブログ(https://blogs.msdn.microsoft.com/vijaysk/2012/10/26/tools-to- – DaveShaw

+2

[Windows 7で低メモリ状態をシミュレートするにはどうすればよいですか?](http://stackoverflow.com/questions/7827716/how-can-i-simulate- a-low-memory-condition-in-windows-7)または[CPU /メモリ/ディスクの読み込みをシミュレートするツール](https://blogs.msdn.microsoft.com/vijaysk/2012/10/26/tools-to -simulate-cpu-memory-disk-load /)? – Solarflare

+0

マシンからメモリーDIMMをヤンクしてみましたか? OSを実行するのに必要な最小限のままにしておいてください。 – NotMe

答えて

3

GCSettingsの待ち時間モードをSustainedLowLatencyに変更すると、システムが使い果たされない限りガベージコレクションがまったく実行されなくなります。

GCSettings.LatencyMode = GCLatencyMode.SustainedLowLatency; 
1

あなたはおそらく、あなただけのメモリー〜4ギガバイトに対処することができ、32ビットプロセスとして、あなたの記憶豚を実行しているので、あなたが見限度に実行されています。

64ビットプロセス(明示的にx64用にコンパイル)として実行するか、複数のコピーを生成するようにしてください。

つまり、テスト中のプロセスで利用可能なメモリを制限するより良い方法があります。 1つの例がここに与えられます:Set Windows process (or user) memory limit

関連する問題