Sprachspeicherverwaltung ist ein wichtiger Aspekt des Sprachdesigns. Es ist ein wichtiger Faktor bei der Bestimmung der Sprachleistung. Ob manuelle Verwaltung in der C-Sprache oder Garbage Collection in Java, sie sind zu den wichtigsten Funktionen der Sprache geworden. Hier nehmen wir die Python-Sprache als Beispiel, um die Speicherverwaltungsmethode einer dynamisch typisierten, objektorientierten Sprache zu veranschaulichen.
Zusammenfassung in einem Satz: Referenzzählung ist hauptsächlich eine klare Markierung, und Generationsrecycling ist eine Hilfsfunktion (empfohlenes Lernen: Python-Video Tutorial)
Garbage Collection in Python (3 Typen)
Referenzzählung
Wenn ein Objekt Wenn der Referenzzähler 0 erreicht, befindet sich das Objekt möglicherweise im Speicher, ist aber nicht mehr zugänglich. Während Pythons Garbage Collection können keine anderen Vorgänge ausgeführt werden. Wenn Python ein Objekt recycelt, wenn seine Referenzanzahl 0 wird, ist die Effizienz von Python offensichtlich sehr gering. Wann wird Python es also recyceln? Das ist eine gute Frage.
Python überwacht, wie viele neue Objekte es erstellt hat und wie viele Referenzzähler der Objekte 0 geworden sind. Die Differenz zwischen den beiden Werten wird mit dem Schwellenwert verglichen. Wenn sie größer als der Schwellenwert ist, Der Speicher beginnt, Müll zu sein. Beim Recycling werden Objekte mit einem Referenzzähler von 0 zerstört.
Vorteile: einfache Echtzeitleistung, Nachteile: Die Aufrechterhaltung der Referenzzählung verbraucht Ressourcen und Zirkelverweise.
Generationen-Recycling
Um die Effizienz zu verbessern, gibt es viele Objekte, die nach mehrmaliger Reinigung noch vorhanden sind. Es kann davon ausgegangen werden, dass solche Objekte nicht gereinigt werden müssen häufig recycelt werden und können recycelt werden. Es ist in verschiedene Sammlungen unterteilt, und jede Sammlung hat unterschiedliche Recyclingintervalle. Einfach ausgedrückt ist dies das generationsübergreifende Recycling von Python.
Um genau zu sein, wird Müll in Python in 1, 2 und 3 Generationen unterteilt. Objekte in der 1. Generation werden jedes Mal gereinigt, wenn sie nach der Reinigung noch vorhanden sind Die Sammlung der zweiten Generation Auf die gleiche Weise werden die Objekte, die beim Bereinigen der Sammlung der zweiten Generation vorhanden sind, in die Sammlung der zweiten Generation aufgenommen.
Wie wird die Reinigungszeit jeder Sammlung zugeteilt? Der Müll der ersten Generation wird zuerst gereinigt. Nachdem der Müll der zweiten Generation einmal gereinigt wurde 10 Mal gereinigt, wird der Müll der zweiten Generation gereinigt.
Löschen markieren
Bei Bedarf zuweisen Wenn der Speicher nicht ausreicht, beginnen Sie mit dem Register und der Referenz im Programmstapel, durchlaufen Sie das Objekt und markieren Sie es Das durchquerte Objekt wird dann aus dem Speicher gelöscht.
Weitere technische Artikel zum Thema Python finden Sie in der Spalte Python-Tutorial, um mehr darüber zu erfahren!
Das obige ist der detaillierte Inhalt vonWas ist der Speicherverwaltungsmechanismus von Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!