Kotlin Multiplatform Academy · Lektion

Speicher und ARC in Kotlin/Native

Besitzverhältnisse über die Sprachgrenze hinweg verstehen

Lektion 2 von 413 Schritte

Speicher und ARC in Kotlin/Native ist eine kostenlose Kotlin Multiplatform 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 Kotlin Multiplatform Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Multiplatform Academy-Kurs umfasst insgesamt 4 Lektionen.

Zwei Welten des Speichers

Unter iOS existieren Ihre Kotlin-Objekte und Apple-Objekte nebeneinander. Kotlin/Native verwendet seinen eigenen Garbage Collector, während Apple im Hintergrund die Referenzzählung ARC nutzt.

Was ARC tut

ARC, Automatic Reference Counting, gibt ein Objective-C-Objekt frei, sobald nichts mehr auf es references. Das geschieht automatisch, dennoch wird der Besitz präzise nachverfolgt. 🧮

Kotlin-Seite: ein GC

Kotlin-Objekte werden von einem garbage collector verwaltet, nicht durch Zählen. Sie müssen nur selten etwas manuell freigeben, helfen aber, indem Sie veraltete Referenzen verwerfen.

Die beiden Seiten verbinden

Wenn ein Kotlin-Objekt ein Apple-Objekt enthält, sorgt die Runtime für die korrekten Zähler, damit keine der beiden Seiten den Speicher zu früh freigibt. Die boundary bleibt konsistent.

Der neue Memory Manager

Modernes Kotlin/Native verwendet einen nebenläufigen Garbage Collector. Dadurch wurden die alten Regeln zum Einfrieren entfernt, sodass das Teilen von Zuständen über Threads hinweg viel einfacher ist als früher. ✨

Achten Sie auf Retain Cycles

Ein retain cycle entsteht, wenn zwei Objekte jeweils eine starke Referenz aufeinander halten und deshalb keines von beiden jemals freigegeben wird. Auf der Apple-Seite führt das zu einem Speicherleck.

Zyklen gezielt aufbrechen

Vermeiden Sie Zyklen, indem ein untergeordnetes Objekt keine starke Referenz auf sein übergeordnetes Objekt hält. Entfernen Sie Referenzen, sobald die Arbeit abgeschlossen ist, damit der collector den Speicher zurückgewinnen kann.

Closures erfassen starke Referenzen

Eine an Apple-Code übergebene Kotlin-Lambda erfasst alles, worauf sie zugreift. Wenn sie self erfasst, kann ein Zyklus entstehen. Erfassen Sie daher nur, was die closure tatsächlich benötigt.

val cb = { useResult(localValue) }

Langlebige Singletons

Objekte, die während der gesamten Laufzeit der App bestehen, etwa ein gemeinsam genutzter Client, sind in Ordnung, wenn dies beabsichtigt ist. Stellen Sie nur sicher, dass ein singleton keine Daten festhält, die es freigeben sollte.

Werkzeuge machen es sichtbar

Xcode Instruments und das Tool Leaks können auch auf der Kotlin-Seite Speicherwachstum erkennen. Durch Profiling sehen Sie, ob Ihre references tatsächlich freigegeben werden.

Praktische Faustregel

Lassen Sie die Garbage Collector ihre Arbeit erledigen, vermeiden Sie starke Zyklen und geben Sie große Objekte nach ihrer Verwendung frei. Damit decken Sie fast alle memory-Fragen in echten KMP-Apps ab.

Kurzer Check

Ein kurzer Check zum plattformübergreifenden Speicher.

Zusammenfassung: Speicher und ARC

Sie haben gelernt, dass Kotlin einen collector verwendet, Apple dagegen ARC, und dass die Runtime beide miteinander verbindet. Ihre wichtigste Aufgabe besteht darin, Retain Cycles zu vermeiden. 🎉

Kostenlos starten

Lerne Kotlin mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „Speicher und ARC in Kotlin/Native“ kostenlos?

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

Was lerne ich in „Speicher und ARC in Kotlin/Native“?

Besitzverhältnisse über die Sprachgrenze hinweg verstehen Du übst Kotlin Multiplatform 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 Kotlin Multiplatform Academy zu starten?

Keine Vorkenntnisse erforderlich. Kotlin Multiplatform 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 „Speicher und ARC in Kotlin/Native“?

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 Kotlin Multiplatform Academy-Lektion Code schreiben und ausführen?

Ja. Jede Kotlin Multiplatform 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. Apple-Frameworks aus Kotlin verwenden
  2. Speicher und ARC in Kotlin/Native
  3. cinterop mit C-Bibliotheken
  4. Ein Native SDK sauber kapseln
← Zurück zu Kotlin Multiplatform Academy