Heim >Web-Frontend >js-Tutorial >Was bedeutet js-Speicherverlust? Einführung in js-Speicherlecks
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-KenntnisseDas 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!