Ich habe eine UWP Windows 10 App und bemerkte, dass die Speicherauslastung im Task-Manager im Laufe der Zeit zunimmt.UWP Windows 10 App Speicher auf Navigation
Ich zog die App zurück und fand den Speicher erhöht, wenn die Navigation Seiten. Also habe ich eine einfache App mit nur ein paar Seiten zum Testen gemacht und der Speicher nimmt in dieser einfachen App noch zu. Ich habe eine MainPage, die einen Frame von Page1 zu Page2 und zurück auf einem Timer navigiert.
Page1 und Page2 sind leere Seiten mit einem Gitter mit einer Hintergrundfarbe, so dass Sie die Navigation sehen können. Während diese App ausgeführt wird, erhöht sich die Speicherbelegung im Task-Manager alle 30 Minuten um ca. 1 MB.
Der Haufen wird immer größer:
Verglich man Schnappschüsse von den
Ich habe die App mit der Speicherdiagnose in VS2015 der verwalteten Heap wird wie erwartet ausgeführt Heap zeigt:
Ich bin verwirrt, was diese McgInterop Objekte sind? und warum eine solche einfache App immer mehr Speicher benötigt. Meine Haupt-App muss lange laufen (Monate +). Schätze jede Hilfe.
Ich habe versucht, die Seiten NavigationCacheMode zu ändern, wenn sie auf Erforderlich gesetzt sind, werden die Seiten einmal erstellt. Wenn diese Option deaktiviert ist, werden die Seiten jedes Mal erstellt, und ich habe überprüft, dass der Finalizer wie erwartet aufgerufen wird.
-
bearbeiten: Ich habe eine Taste, um den Timer zu starten und zu stoppen (die oben aktualisiert). Es sieht so aus, als würde die Speicherbelegung im Task-Manager bei laufendem Timer ansteigen, wenn der Timer gestoppt wird, sinkt die Speicherbelegung.
ich die Speichernutzung in Task-Manager über einen Tag gemessen Start und der Timer um alle 2 Stunden stoppen wie folgt, erhöht sich langsam und dann irgendwann fällt:
12.5 -> 17.1 -> 16.7 -> 13.9 -> 16.8 -> 22.5 -> 13.6 -> 14.6 -> 24.9 -> 15.2
Also denke ich, alles funktioniert gut? Aber mir ist nicht klar, was hier passiert, warum steigt es so sehr? Wann wird unter welchen Bedingungen frei?
Verzögert das System die Freigabe des Speichers, während die Seiten navigieren? Wann würde der Benutzer normalerweise mit dem Bildschirm interagieren?
Der ** Rahmen ** behält einen Navigationsverlauf. Tritt dies immer noch auf, wenn Sie den Backstack hin und wieder löschen? –
Ich habe den obigen Code aktualisiert, um den Backstack zu löschen, der Speicher wird im Taskmanager wie zuvor immer noch erhöht. – tagy22
Wenn Sie eine Lösung erhalten, teilen Sie sie bitte in einer Selbstantwort mit. Leute in den Antworten unten (gelöscht) fragen danach. Danke – Drew