Heim > Artikel > Web-Frontend > Was ist der Unterschied zwischen konstantem Pool und Heap in Javascript?
Der Unterschied zwischen dem Konstantenpool und dem Heap in JavaScript: 1. Der Konstantenpool wird zum Speichern von Konstanten und Basisdatentypen verwendet, während der Heap zum Speichern komplexer Datentypen verwendet wird. 2. Die Systemeffizienz des Konstantenpools beträgt höher, während der Heap Speicherplatz und Adressen zuweisen muss und die Adresse im Stapel gespeichert werden muss, sodass die Effizienz geringer ist als die des Stapels (konstanter Pool).
Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.
Der Speicher von JavaScript ist in Stapelspeicher, Heapspeicher und Konstantenpool unterteilt. Der Konstantenpool wird im Allgemeinen im Stapel zusammengefasst.
Stapelspeicher: Wird zum Speichern grundlegender Datentypen verwendet zum Speichern von Konstanten Basisdatentyp (normalerweise in Stapelspeicher klassifiziert)
Heapspeicher: Wird zum Speichern komplexer Datentypen verwendet
Wenn eine Variable einen Basisdatentyp speichert, wird der Wert der Variablen im Stapelspeicher gespeichert
Stapelspeicher (konstanter Pool) Die Systemeffizienz ist höher. Der Heap-Speicher muss Speicherplatz und Adressen zuweisen und die Adressen auf dem Stapel speichern, sodass die Effizienz geringer ist als die des Stapels.
Stapelspeicher
Da grundlegende Zahlentypen wenig Platz beanspruchen, eine feste Größe haben und häufig verwendet werden, werden sie im Stapelspeicher gespeichertNehmen Sie als Beispiel einen der grundlegenden Datentypen, Zahl :
Wenn wir eine Basisdatentypvariable deklarieren, werden der Variablenname und der spezifische Wert im Stapelspeicher gespeichert
Wenn wir console.log(a) verwenden, geben wir den entsprechenden Wert ausHeapspeicher
Da komplexe Datentypen viel Platz beanspruchen und keine feste Größe haben, wirkt sich das Speichern auf dem Stapel auf die Leistung aus, sodass sie im Heap-Speicher gespeichert werden.
Wenn wir eine Variable zum Speichern eines Komplexes deklarieren Der Datentyp wird im Stapelspeicher gespeichert. Generieren Sie einen Variablennamen und einen bestimmten Wert. Dieser bestimmte Wert ist eine von JS zugewiesene Speicherreferenzadresse. Diese Adresse verweist auf den von uns erstellten komplexen Datentyp, der im Heapspeicher gespeichert ist. Wenn wir die Variable aufrufen, verweist der Parser auf das entsprechende Objekt basierend auf der Referenzadresse, die der Variablen entspricht.Kopieren von Variablen
Kopieren von Basisdatentypen: var num1=5;
var num2=num1;
Im obigen Code sind num1 und num2 tatsächlich zwei verschiedene Variablen, und ihre Operationen hängen nicht miteinander zusammen. Dies liegt daran, dass in js , Diese Art des Variablenkopierens erzeugt tatsächlich eine Kopie einer Variablen (d. h. num2=1)
Wie in der Abbildung gezeigt
Kopieren komplexer Datentypen:var person={name:'李华'}; //创建一个对象 var per=person ; //进行对象的复制Der Unterschied zum Kopieren grundlegender Datentypvariablen ist Wenn wir ein komplexes Datentypobjekt kopieren, besteht das Wesentliche darin, die Speicherreferenzadresse der Variablen zu kopieren. Daher beziehen sich beide auf dasselbe Objekt , sie arbeiten alle im Speicher. Das Bild zeigt das gleiche Objekt: Die Übergabe von Funktionsparametern ist eigentlich eine Art Variablenkopie Lern-Tutorial
]
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen konstantem Pool und Heap in Javascript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!