Heim  >  Artikel  >  Web-Frontend  >  Verstehen Sie den Garbage-Collection-Mechanismus von js in Sekundenschnelle

Verstehen Sie den Garbage-Collection-Mechanismus von js in Sekundenschnelle

hzc
hzcnach vorne
2020-06-13 09:49:412987Durchsuche

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


Als klar markieren

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

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


  • Verwenden Sie globale Variablen so wenig wie möglich

  • Variablenreferenzen nach Möglichkeit manuell löschen

Danke fürs Lesen!

Wenn Sie über WeChat kommunizieren müssen, können Sie eine Nachricht hinterlassen!

Empfohlenes Tutorial: „JS-Tutorial

Das obige ist der detaillierte Inhalt vonVerstehen Sie den Garbage-Collection-Mechanismus von js in Sekundenschnelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Leichte Vue-DiagrammkomponenteNächster Artikel:Leichte Vue-Diagrammkomponente