0Pricing
Swift Academy · Lektion

Allocations- und Leaks-Instruments

Verfolgen Sie Heap-Allokationen und finden Sie Speicherlecks und Zombie-Objekte.

Allocations- und Leaks-Instruments ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Das Allocations-Instrument

Das Allocations-Instrument erfasst jede Heap-Allokation und -Freigabe und zeigt das Speicherwachstum im Zeitverlauf an.

// Instruments → Allocations template
// Shows live bytes, allocation count, and transient objects

Analyse des Heap-Wachstums

Verwenden Sie Ihre App und beobachten Sie das Diagramm „Live Bytes“. Ein stetiges Wachstum ohne Plateau weist auf ein Speicherleck hin.

// Normal: allocations rise and fall as views appear/disappear
// Leak: allocations only grow, never released

Generationen analysieren

Erstellen Sie vor und nach einem Benutzerablauf einen Generations-Snapshot, um zu sehen, welche Objekte unerwartet bestehen bleiben.

// Instruments toolbar → "Mark Generation"
// Perform action (e.g., open and close a screen)
// "Mark Generation" again
// Inspect objects in the new generation that weren't released

Das Leaks-Instrument

Das Leaks-Instrument durchsucht den Heap regelmäßig und identifiziert Objekte, die zwar allokiert, aber nicht erreichbar sind (Retain-Zyklen).

// Run Leaks alongside Allocations in the "Leaks" template
// Red bars in the timeline = leaked objects detected
// Click a bar to see the leaked object graph

Das Leak-Diagramm lesen

Das Objekt-Diagramm von Leaks zeigt, welche Objekte sich gegenseitig in einem Zyklus halten, und grenzt so die Ursache des Retain-Zyklus ein.

// Example cycle:
// ViewController → ViewModel → Closure → ViewController
// Instruments draws the reference edges visually

Retain-Zyklen in Closures erkennen

Das häufigste Speicherleck: Eine Closure erfasst self stark, während self die Closure hält.

class MyVC: UIViewController {
  var onComplete: (() -> Void)?
  override func viewDidLoad() {
    super.viewDidLoad()
    // LEAK: closure captures self; self holds onComplete
    onComplete = { self.dismiss(animated: true) }
    // FIX:
    onComplete = { [weak self] in self?.dismiss(animated: true) }
  }
}

Das VM-Tracker-Instrument

Der VM Tracker zeigt virtuelle Speicherbereiche und veränderte Speicherseiten. Ein hoher Druck auf den belegten Speicher veranlasst iOS, Ihre App zu beenden.

// Instruments → "VM Tracker" in allocation instrument
// Look for: large __DATA dirty pages, high CG raster memory

Zombie-Objekte

Aktivieren Sie in Instruments „Zombie Objects“, um zu früh freigegebene Objekte zu erkennen – sie werden in „Zombies“ umgewandelt und protokollieren jeden Zugriffsversuch.

// Instruments → Edit → Record Settings → Enable Zombie Objects
// Accessing a zombie prints: "*** -[MyObject method] sent to deallocated instance"

Heap Shots

Vergleichen Sie mit „Heap Shot“ zwei Heap-Zustände, um Objekte zu finden, die zwischen den Aufnahmen bestehen bleiben – ideal zum Erkennen von Leaks in ViewControllern.

// After navigating to and from a screen twice:
// Heap should return to baseline
// Objects remaining in the diff = leaked view controllers or models

MetricKit für den Produktionsspeicher

Verwenden Sie MXMetricPayload, um in der Produktion Speicher- und Performancedaten von echten Nutzern zu erfassen.

import MetricKit
class AppDelegate: UIApplicationDelegate, MXMetricManagerSubscriber {
  func didReceive(_ payloads: [MXMetricPayload]) {
    payloads.forEach { print($0.memoryMetrics as Any) }
  }
}

Kurze Prüfung

Worauf weist ein stetig wachsendes Diagramm „Live Bytes“ im Allocations-Instrument hin?

Zusammenfassung der Lektion

Verwenden Sie Allocations, um das Heap-Wachstum und Generations-Snapshots zu verfolgen. Verwenden Sie Leaks, um Retain-Zyklen zu erkennen und das Objekt-Diagramm anzuzeigen. Nutzen Sie Zombie Objects für Fehler durch zu frühe Freigaben. Beheben Sie Probleme in Closures mit [weak self]. Verwenden Sie MetricKit, um den Speicherverbrauch echter Nutzer in der Produktion zu verfolgen.

Häufig gestellte Fragen

Ist die Lektion „Allocations- und Leaks-Instruments“ kostenlos?

Ja — der vollständige Text von „Allocations- und Leaks-Instruments“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Allocations- und Leaks-Instruments“?

Verfolgen Sie Heap-Allokationen und finden Sie Speicherlecks und Zombie-Objekte. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Allocations- und Leaks-Instruments“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Instruments-Grundlagen: Time Profiler
  2. Allocations- und Leaks-Instruments
  3. Main Thread Checker und Hänger
  4. Hot Paths optimieren: COW, Inlining und Spezialisierung
← Zurück zu Swift Academy