Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Wie verwende ich den Speichergrafik -Debugger, um die Rückhaltezyklen in mvvmcross -Anwendungen zu identifizieren?


Wie verwende ich den Speichergrafik -Debugger, um die Rückhaltezyklen in mvvmcross -Anwendungen zu identifizieren?


Die Verwendung des Speichergrafik -Debuggers in Xcode ist ein effektiver Weg, um die Rückhaltezyklen in mvvmcross -Anwendungen zu identifizieren. Hier ist eine Schritt-für-Schritt-Anleitung, wie es geht:

Einführung in den Memory Graph -Debugger

Der Speichergrafik -Debugger ist ein leistungsstarkes Tool in Xcode, mit dem Entwickler Speicherlecks identifizieren und Zyklen beibehalten können, indem Objektbeziehungen im Speicher visualisiert werden. Es liefert eine Momentaufnahme des aktuellen Speicherzustands, der zeigt, welche Objekte beibehalten werden und wie sie verwiesen werden.

Schritte zur Identifizierung von Rückhaltszyklen

1. Führen Sie Ihre App aus: Beginnen Sie mit Ihrer MVVMCross -Anwendung in Xcode. Stellen Sie sicher, dass Sie den spezifischen Teil der App testen, in dem Sie vermuten, dass ein Rückhalteszyklus auftreten kann.

2. Öffnen Sie den Speichergrafik-Debugger: Wenn Ihre App ausgeführt wird, öffnen Sie den Speichergrafik-Debugger, indem Sie auf die Schaltfläche Drei-Knoten-Taste zwischen dem visuellen Debugger und dem Simulator-Simulator-Schaltflächen in der Symbolleiste von Xcode klicken. Dadurch wird eine Speicherschnitte des aktuellen Status Ihrer App erfasst.

3. Analysieren Sie den Speicher -Snapshot: Im linken Bereich des Speichergrafik -Debuggers sehen Sie eine Liste von Objekten, die derzeit im Speicher im Speicher sind, zusammen mit der Anzahl der Instanzen jeder Klasse. Suchen Sie nach Objekten, die nicht da sein sollten oder die eine unerwartet hohe Anzahl von Instanzen aufweisen.

4. Identifizieren Sie die Zyklen: Wählen Sie ein Objekt aus dem linken Feld aus, um den Referenzdiagramm anzuzeigen. Die Grafik zeigt starke Referenzen als kräftige Linien und unbekannte Referenzen (die schwach oder stark sein können) als hellgraue Linien. Ein Rückhalteszyklus wird durch eine Schleife in der Grafik angezeigt, in der sich Objekte auf eine Weise verweisen, die verhindert, dass sie bearbeitet werden.

5. Navigieren Sie Objektdiagramme: Um die Quelle eines Rückhaltungszyklus zu verfolgen, müssen Sie möglicherweise durch mehrere Objektdiagramme navigieren. Beginnen Sie mit dem durchgesickerten Objekt und befolgen Sie die Referenzen rückwärts, um das übergeordnete Objekt zu finden, das es beibehält.

6. Objektdetails untersuchen: Wenn Sie im Diagramm auf einen Knoten klicken, liefert ein Inspektionspanel detaillierte Informationen zum Objekt, einschließlich seiner Eigenschaften und Beziehungen. Dies kann Ihnen helfen, zu verstehen, warum ein Objekt beibehalten wird.

7. Wiederholen Sie die Kernflüsse: Um einen Rückhalteszyklus zu bestätigen, wiederholen Sie den Kernfluss oder die Funktion in Ihrer App mehrmals und machen Sie nach jeder Iteration Speicherschnappschüsse. Wenn die Anzahl der Fälle eines bestimmten Objekts im Laufe der Zeit zunimmt, kann dies auf einen Rückhalteszyklus hinweisen.

8. Beheben Sie den Rückhaltezyklus: Sobald Sie die Quelle des Rückhaltezyklus identifiziert haben, können Sie ihn beheben, indem Sie gegebenenfalls starke Verweise auf schwache oder unbekannte Referenzen ändern. Verwenden Sie beispielsweise in Verschlüssen "[schwaches Selbst]", um "Selbst" zu vermeiden.

Häufige Retain -Zyklus -Szenarien in MVVMCross

In MVVMCross -Anwendungen treten häufig die Zyklen aufgrund starker Referenzen zwischen Ansichtsmodellen und Ansichten oder aufgrund von Schließungen auf, die Ansichtsmodelle oder Ansichten stark erfassen. Wenn beispielsweise ein Ansichtsmodell einen starken Hinweis auf eine Ansicht hat und die Ansicht auch eine starke Referenz auf das Ansichtsmodell hat, kann auch keiner von beiden bearbeitet werden.

Um solche Zyklen zu verhindern, stellen Sie sicher, dass Ihre Ansichtsmodelle bei Entlassung der Ansichten ordnungsgemäß gereinigt werden. Verwenden Sie Lebenszyklusmethoden von MVVMCross, wie z.

Wenn Sie diese Schritte befolgen und verstehen, wie Objektbeziehungen im Speichergrafik -Debugger visualisiert werden, können Sie bei Ihren MVVMCross -Anwendungen effektiv identifizieren und beheben.

Zitate:
[1] https://doordash.engineering/2019/05/22/ios-memory-leaks-and-retain-cycle-dektection-using-xcodes-memory-graph-debugger/
[2] https://careersatdoordash.com/blog/ios-memory-leak-and-retain-cycle-deTection-using-xcodes-memory-graph-debugger/
[3] https://www.thenew.com/blog/memory-leak-with-memory-graph-debugger/
[4] https://forums.developer.apple.com/forums/thread/112268
[5] https://www.mvmcross.com/mvmcross-5-release/
[6] https://www.donnywals.com/using-xcodes-memory-graph-t-find-memory-leaks/
[7] https://moldstud.com/articles/p-swift-memory-management-tip-for-retain-cycle- isues
[8] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[9] https://digginginthecode.wordpress.com/2016/06/14/xamarin-performance-advices/