2015-03-03 6 views
5

Eine Analyse der Leistung unserer Anwendung zeigte, dass die CPU-Auslastung zu Zeiten, in denen Speicher von der .NET-Speicherverwaltung zugewiesen werden musste, ihren Höhepunkt erreichte.Speicherverwaltung für eine .NET (wpf) -Anwendung

Es gab eine (enorme) Menge an Speicher nur frei, aber es wurde von der Anwendung nicht beansprucht, es suchte nach freiem Speicherplatz in seinem bereits beanspruchten Teil des Speichers.

Ist es möglich, eine Anwendung zu konfigurieren, mehr Speicher, wenn möglich, behaupten?
Ist dies vielleicht mit der Tatsache zusammen, dass die Anwendung unter Citrix gehostet wird?

+0

Was meinen Sie mit "Es gab eine enorme Menge an Speicher nur kostenlos?" Meinst du, es ist tatsächlich freigegeben, d. H. Über 'VirtualFree', oder hat GC nur einen der SOH kompaktiert? Auch, ist Ihre langsame Zuweisung auf der LOH oder SOH? –

+0

Die Leistungsindikatoren zeigten, dass auf dem Citrix Server maximal ca. 20% des Citrix Speichers wurden von diesem Prozess verwendet. Ich frage mich, warum der Prozess z. 30-40%? Leider ist der LOH/SOH in diesen Leistungsdaten nicht enthalten. – Gerard

+1

Ist es ein 32-Bit- oder 64-Bit-Prozess? Könnten Sie die tatsächlichen Zahlen in der Frage angeben? Dies wird Ihnen helfen, zu verstehen, welche Limits Sie treffen könnten. – codekaizen

Antwort

1

Windows-Anwendungen können nicht unbegrenzt wachsen, egal wie viel freier Speicher das System hat.

Sie über die aktuellen Grenzen hier lesen: https://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx#memory_limits

und zusätzliche Informationen über das Thema hier: http://www.codeproject.com/Articles/483475/Memory-Limits-in-a-NET-Process

Wenn eine Anwendung an ihre Grenze zu nahe kommt, starten Sie werden den Garbage Collector jedes Mal Spinnen Er muss neuen Speicher beanspruchen, um zu vermeiden, dass der Speicherplatz knapp wird und er mit einer OutOfMemoryException abstürzt. Dieser zusätzliche Aufwand, Speicher gleichzeitig freizugeben und zu beanspruchen, wirkt sich ebenfalls stark negativ auf die Leistung aus.

An welchem ​​Punkt hört die Anwendung neuer Speicher behaupten? Nahe bei 1 GB? 2 GB? 64-Bit-Anwendungen können größere Speichermengen verwenden, aber es ist möglicherweise keine Option ...

Verwandte Themen