Ich liebe, dass JavaScript locker eingegeben wird.Führt das Ändern des Typs einer Variablen zu Speicherlecks?
Um ehrlich zu sein, denke ich selten über Speicherverwaltung, wenn Sie es verwenden.
Wenn eine Variable erstellt wird, sogar in JS, wird eine bestimmte Menge an Speicher für diese Variable zugewiesen. Variablen in JavaScript sind jedoch veränderbar. Was passiert, wenn eine Variable von einem Typ in einen anderen geändert wird?
Zum Beispiel:
var a = "hello world"; //~22 bytes
a = 10; //now 'a' is only 8 bytes
Sie die restlichen 14 Bytes erhalten Müll gesammelt? Oder verursacht dies ein Speicherleck?
Seltsame Frage. Wenn einfacher Code wie dieser ein Speicherleck verursacht, wie könnten Sie die meisten Websites verwenden, ohne dass Ihr Computer stirbt? –
Nein. Variablen in im Wesentlichen all diesen Sprachen sind als Referenzen auf typisierte Speicherpuffer im Heap implementiert. Wenn der Wert geändert wird, wird die Variable einfach so geändert, dass sie auf ein anderes Objekt im Heap verweist. Wenn die Variable die letzte Referenz auf das Objekt war, sollte der Verweis-/Speicherbereinigungsmechanismus, der verwendet wird, schließlich diesen Heap-Speicher freigeben und freigeben. – Linuxios
Die einzige Ausnahme zu dem oben genannten besteht darin, dass in einigen Sprachen Laufzeiten einfache Typen mit festen Größen wie boolean, Ganzzahlen und Gleitkommazahlen direkt "in" der Variablen gespeichert werden; h. das Feld, das normalerweise den Zeiger auf den Heap enthalten würde, enthält die Daten und ist irgendwie als solches markiert. – Linuxios