Heim  >  Artikel  >  Web-Frontend  >  Was bedeutet js-Speicherverlust? Einführung in js-Speicherlecks

Was bedeutet js-Speicherverlust? Einführung in js-Speicherlecks

不言
不言Original
2018-08-15 17:22:263838Durchsuche

Der Inhalt dieses Artikels befasst sich damit, was ein js-Speicherverlust bedeutet. Die Einführung zu js-Speicherlecks hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.

Speicherverlust bedeutet, dass ein Teil des zugewiesenen Speichers nicht verwendet oder recycelt werden kann, bis der Browserprozess beendet ist.

Der Garbage Collector scannt regelmäßig Objekte und zählt die Anzahl anderer Objekte, die Verweise auf jedes Objekt haben. Wenn ein Objekt 0 Referenzen hat (keine anderen Objekte verweisen darauf) oder die einzige Referenz auf das Objekt zirkulär ist, kann der Speicher des Objekts zurückgefordert werden.

Wenn der erste Parameter von setTimeout eine Zeichenfolge anstelle einer Funktion verwendet, führt dies zu einem Speicherverlust.

Schließung, Konsolenprotokoll, Schleife (wenn zwei Objekte aufeinander verweisen und sich gegenseitig beibehalten, tritt eine Schleife auf)

Methode zum Freigeben von Speicher: Wert „null“ zuweisen

Situationen, die Speicherlecks verursachen:

1. Speicherlecks durch unerwartete globale Variablen

Ursache: Globale Variablen werden nicht recycelt

Lösung: Strikter Modus vermeiden

2. Durch Schließungen verursachte Speicherverluste

Ursache: Schließungen können lokale Variablen innerhalb einer Funktion beibehalten und verhindern, dass sie freigegeben werden.

Lösung: Die Event-Handler-Funktion ist extern definiert, berührt den Abschluss oder löscht den Verweis auf das DOM in der externen Funktion, die die Event-Handler-Funktion definiert

3. Grund: Obwohl an anderer Stelle gelöscht, die DOM-Referenz existiert noch im Objekt

Lösung: Manuell löschen

4. Ursache: Timing Es gibt eine Referenz auf das DOM Auch wenn der DOM gelöscht wird, ist der DOM immer noch im Speicher

Lösung: Timer und DOM manuell löschen

5. Elemente. Es liegt ein durch Referenz verursachter Speicherverlust vor. Ursache: Wenn ul li in p dieses p erhält, verweist es indirekt auf ein bestimmtes erhaltenes li, da p indirekt auf li verweist Wird gelöscht, befindet es sich noch im Speicher, und solange li nicht gelöscht wird, wird sein übergeordnetes Element nicht gelöscht

Lösung: Qing Kong manuell löschen

Verwandte Empfehlungen:

JavaScript. Speicherlecks und Speicherverwaltungsfähigkeiten vermeiden. Javascript-Kenntnisse

Das obige ist der detaillierte Inhalt vonWas bedeutet js-Speicherverlust? Einführung in js-Speicherlecks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn