Speicherleck auf Windows Phone 8

8

Ich entwickle eine Windows 8 Native App. Meine App stürzt ab, nachdem ich in der Anwendung für einige Zeit hin und her gegangen bin. Bei der Analyse mit dem Speicherprofiler habe ich festgestellt, dass die Speicherbelegung jedes Mal, wenn ich von einer Seite zur anderen navigiere, steigt, obwohl ich alle Objekte von list, webclient, string usw. auf null setze und anschließend GC.Collect aufruft das NavigatedFrom Event.

Zuerst dachte ich, es wäre aufgrund der Bilder und daher habe ich die Bilder aus der App entfernt und getestet, aber immer noch gibt es keine Änderung in der Speichernutzung der App. Irgendwie funktioniert der GC.Collect nicht und der Speicher wird freigegeben.

Ich habe die unten erwähnten Dinge versucht, aber zu meinem Pech funktioniert nicht, um den Speicher freizugeben, stattdessen bleibt das Ergebnis gleich.

  • Ich habe das Image urisource auf null gesetzt, bevor ich die neue Quelle einstelle, und dann gc.Collect aufrufen, um die Speicherbelegung freizugeben, aber anscheinend nicht freigegeben

  • Zweitens habe ich alle Objekte auf null gesetzt und GC.Collect () aufgerufen, aber es wird trotzdem nicht der Speicherplatz aus der Speicherbelegung der Telefon-App freigegeben.

  • Ich habe auch versucht, mit dem Speicher-Profiler zu analysieren, aber ich kann nichts verfolgen.

Ich habe auch den gesamten Beitrag durchgesehen und die vorgeschlagenen Dinge implementiert, aber GC.Collect () scheint den Speicher nicht freizugeben.

Gibt es für das folgende Problem eine Lösung? Wie kann ich den Speicher freigeben, der beim Navigieren von einer Seite zur nächsten verbraucht wurde?

    
user2728319 29.08.2013, 08:22
quelle

1 Antwort

3

Es scheint so, als würde etwas verhindern, dass die Objekte in einem Zyklus vom Müllsammler recycelt werden. Dies könnte und ist normalerweise darauf zurückzuführen, dass einige Ereignishandler nicht entfernt werden, wodurch das Objekt am Leben erhalten wird.

Wenn Sie ein Ereignis auf der Seite oder im Ansichtsmodell oder ein Objekt auf der Seite haben, entfernen Sie es (- =) in der onNavigatedFrom-Methode, bevor Sie die Seite verlassen ... Dies kann den Trick und Ihren Seitenspeicher bewirken frei ....

    
Josue Yeray 29.08.2013 08:41
quelle