Heim  >  Artikel  >  Web-Frontend  >  Verstehen Sie schnell die JavaScript-Garbage Collection

Verstehen Sie schnell die JavaScript-Garbage Collection

Guanhui
Guanhuinach vorne
2020-05-25 09:38:002097Durchsuche

Verstehen Sie schnell die JavaScript-Garbage Collection

Vorwort

JS verfügt über einen automatischen Garbage-Collection-Mechanismus Mit anderen Worten: Die Ausführungsumgebung verwaltet den während der Codeausführung verwendeten Speicher.

Das Prinzip der JS-Garbage Collection

Die Ausführungsumgebung findet die Variablen, die nicht mehr verwendet werden, und gibt dann den von ihnen belegten Speicher frei .

JS-Garbage-Collection-Strategie

Markierungslöschung

Wenn eine Variable in die Umgebung eintritt, wird sie gelöscht Markieren Sie diese Variable als „betritt die Umgebung“ und wenn die Variable die Umgebung verlässt, markieren Sie sie als „verlässt die Umgebung“.

Die Art und Weise, Variablen zu markieren, hängt von der jeweiligen Implementierung ab. Sie können beispielsweise eine Variablenliste für „Betreten der Umgebung“ und eine Variablenliste für „Verlassen der Umgebung“ verwenden, um zu verfolgen, welche Variablen sich geändert haben.

Zu den Browsern, die die Tag-Entfernung genutzt haben, gehören IE, Firefox und Chrome.

Referenzzählung

Dies ist eine weniger verbreitete Garbage-Collection-Strategie, die die Anzahl der Referenzen auf jeden Wert verfolgt.

Wenn eine Variable a deklariert und der Variablen ein Referenztypwert ({name:'cc'}) zugewiesen wird, beträgt die Anzahl der Referenzen auf diesen Wert 1. Wenn a ({name:'cc '}) einer anderen Variablen b zugewiesen, dann wird die Anzahl der Referenzen auf diesen Wert um 1 erhöht. Wird a dagegen der Wert {name:'xx'} zugewiesen, verringert sich die Anzahl der Referenzen auf den Wert {name:'cc'} um 1. Wenn die Anzahl der Verweise auf den Wert {name:'cc'} 0 wird, bedeutet dies, dass es keine Möglichkeit mehr gibt, auf den Wert {name:'cc'} zuzugreifen, sodass der von ihm belegte Speicherplatz recycelt werden kann. Auf diese Weise wird beim Betrieb des Garbage Collectors der vom Wert {name:'cc'} belegte Speicherplatz recycelt.

Diese Methode wurde von Netscape Navigator 3.0 verwendet, es gibt jedoch ein ernstes Problem: Zirkelverweise.

function circleReferenceProbem(){
  let objectA = new Object()
  let objectB = new Object()
  objectA.someOtherObject = objectB
  objectB.anotherObject = objectA
}

Nach dem Ausführen dieser Funktion wird der Garbage Collector niemals den von ihnen belegten Speicherplatz zurückgewinnen, da die Anzahl der Referenzen dieser beiden Referenzwerte niemals 0 sein wird.

Leistung des JS-Garbage Collectors

Weil der JS-Garbage Collector in jedem zweiten Zyklus eine Garbage Collection durchführt.

Wenn die für die Variable zugewiesene Speichermenge nicht groß ist, ist die Recyclingarbeitslast des Garbage Collectors nicht groß. Wenn die Arbeitslast des Garbage Collectors jedoch zu groß ist, kann es zu Verzögerungen kommen.

Vorschläge zur Speicherverwaltung in JS

1. Verwenden Sie globale Variablen so wenig wie möglich

Variablen manuell löschen wenn möglich Referenz

Empfohlenes Tutorial: „JS Tutorial

Das obige ist der detaillierte Inhalt vonVerstehen Sie schnell die JavaScript-Garbage Collection. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.im. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen