2016-05-31 7 views
4

Also ich möchte meine Windows-Anwendung unter wenig Speicherbedingungen testen, und ich habe gefunden, dass der einfachste Weg, dies zu tun ist, eine andere Anwendung (eine Konsolenanwendung) zu erstellen, die nur Speicher stört.Wie kann ich Speicher schwächen, um eine andere Anwendung zu testen?

Ich habe dieses Monster geschaffen:

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

Aber es geht nur auf 3,7 GB. Ich öffne dann eine andere Instanz dieser Anwendung und es geht wieder runter.

Wie kann ich verhindern, dass der Garbage Collector meine Zuweisungen sammelt?

Oder: Wie kann ich Low-Memory-Bedingungen auf meiner universellen Windows-Anwendung testen?

+0

Müssen Sie Ihre eigene App schreiben, gibt es ein paar Freeware-da draußen da drüben. z.B. [TestLimit] (https://live.sysinternals.com/WindowsInternals/) - Blog auf [wie man verwendet] (https://blogs.msdn.microsoft.com/vijaysk/2012/10/26/tools-to- simulate-cpu-memory-disk-load /) – DaveShaw

+2

Haben Sie ausgecheckt [Wie kann ich einen niedrigen Speicherzustand in Windows 7 simulieren] (http://stackoverflow.com/questions/7827716/how-cani-i-simulate- a-low-memory-condition-in-windows-7) oder [Extras zum Simulieren von CPU/Arbeitsspeicher/Plattenladevorgang] (https://blogs.msdn.microsoft.com/vijaysk/2012/10/26/tools-to -simulate-cpu-memory-disk-load /)? – Solarflare

+0

Haben Sie versucht, Speicher-DIMMs von Ihrem Computer zu entfernen? Belassen Sie es mit dem Minimum, das für die Ausführung des Betriebssystems erforderlich ist. – NotMe

Antwort

3

Sie können versuchen, den GCSettings-Latenzmodus auf SustainedLowLatency zu ändern, wodurch die Garbage-Collection überhaupt vermieden wird, es sei denn, das System läuft aus.

GCSettings.LatencyMode = GCLatencyMode.SustainedLowLatency; 
1

Sie führen wahrscheinlich in die Grenze, die Sie sehen, weil Sie Ihren Speicher Schwein als 32-Bit-Prozess ausgeführt werden, die nur ~ 4 GB Speicher adressieren kann.

Versuchen Sie, als 64-Bit-Prozess auszuführen (für x64 explizit kompilieren), oder erstellen Sie mehrere Kopien.

Das heißt, es gibt bessere Möglichkeiten, den verfügbaren Speicher für den zu testenden Prozess zu begrenzen. Ein Beispiel ist hier gegeben: Set Windows process (or user) memory limit