Speicherverwaltung und Garbage Collection in Python verstehen
Speicherverwaltung und Garbage Collection in Python verstehen
Ein tiefgehender Leitfaden zur Objektverwaltung, Speicheroptimierung und automatischen Speicherbereinigung in Python
Inhaltsverzeichnis
Kapitel 1: Einführung in Speicherverwaltung in Python
- Wie Python Speicher verwaltet
- Stack vs. Heap – wo werden Objekte gespeichert?
- Die Rolle des Python-Interpreters (CPython)
- Bedeutung für Performance und Ressourcenverbrauch
Kapitel 2: Objekte, Referenzen und Lebensdauer
- Alles ist ein Objekt – auch Zahlen und Strings
- Zuweisung vs. Kopie
- Referenzzählung verstehen
- Mini-Projekt: Referenzverhalten mit id() und refcount sichtbar machen
Kapitel 3: Die automatische Speicherbereinigung – Garbage Collection
- Grundlagen der Garbage Collection in Python
- Wie der Garbage Collector zyklische Referenzen erkennt
- Das gc-Modul und seine Funktionen
- Mini-Projekt: Objekte erzeugen, beobachten, löschen
Kapitel 4: Referenzzyklen erkennen und vermeiden
- Wann entstehen Referenzzyklen?
- Auswirkungen auf Performance und Speicher
- Tipps zum Vermeiden und Auflösen von Zyklen
- Mini-Projekt: Referenzdiagramm mit Kommentaren
Kapitel 5: Speicherlecks und häufige Fehlerquellen
- Was sind Speicherlecks in Python?
- Typische Ursachen (z. B. globale Variablen, C-Extensions, Events)
- Tools zur Analyse von Speicherverbrauch
- Mini-Projekt: Unentdeckter Speicherverbrauch im GUI-Programm
Kapitel 6: Das gc-Modul in der Praxis
- Manuelles Auslösen von Garbage Collection
- Objekte verfolgen mit gc.get_objects()
- Sammlung steuern: gc.disable(), gc.collect(), gc.set_threshold()
- Mini-Projekt: GC-Protokollierung in laufendem System
Kapitel 7: Ressourcen managen mit Kontextmanagern
- Speicher ist nicht nur RAM: auch Dateien, Sockets, Handles
- with-Anweisung und __enter__, __exit__
- Verbindung zur Speicherfreigabe und deterministischem Verhalten
- Mini-Projekt: Dateihandling mit automatischem Aufräumen
Kapitel 8: Objekt-Caching und Interning
- Interning von Strings und Zahlen
- Speicher sparen durch Wiederverwendung
- Verhalten von kleinen Ganzzahlen und Konstanten
- Mini-Projekt: Effekt von is vs. == im Speichervergleich
Kapitel 9: Speicheroptimierung und Best Practices
- Objekttypen mit wenig Overhead: __slots__, tuple, array
- Speichereffiziente Datenstrukturen wählen
- Wann lohnt sich manuelle Optimierung?
- Mini-Projekt: Liste vs. Generator im Speichervergleich
Kapitel 10: Werkzeuge zur Speicheranalyse und -profilierung
- Tools: tracemalloc, memory_profiler, objgraph, pympler
- Speicherverbrauch messen und vergleichen
- Memory Snapshots und Differenzanalysen
- Mini-Projekt: Speicherprofil eines Datenanalyseprogramms
Anhang A: Übersicht wichtiger Methoden und Module
- gc, sys.getsizeof(), tracemalloc, id(), del, weakref
- Funktionen und Beispiele in Kurzform
Anhang B: CPython-spezifische Aspekte der Speicherverwaltung
- Objekte, PyObject-Header, Py_INCREF/Py_DECREF
- Unterschiede zu Jython, PyPy, MicroPython
Anhang C: Übungsaufgaben mit Lösungen
- Referenzverhalten simulieren
- Speicheranalyse mit gc und tracemalloc
- Objektlebensdauer im Kontextmanager testen
- Detaillierte Lösungen mit Kommentaren