Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Das WebAssembly.Memory-Objekt ist ein skalierbarer ArrayBuffer oder SharedArrayBuffer, der rohe Bytes von Speicher enthält, auf die ein WebAssembly.Instance zugreift.
Sowohl WebAssembly als auch JavaScript können Memory-Objekte erstellen. Wenn Sie auf den in JS erstellten Speicher von WebAssembly zugreifen möchten, oder umgekehrt, können Sie den Speicher aus dem Modul nach JavaScript exportieren oder Speicher aus JavaScript importieren, wenn das Modul instanziiert wird.
Ursprünglich konnte man Speicheroperationen nur auf einem einzigen Speicher im Wasm-Modul ausführen, sodass es zwar möglich war, mehrere Memory-Objekte zu erstellen, dies aber keinen Sinn machte. Neuere Implementierungen ermöglichen es WebAssembly Speicheranweisungen auf einen bestimmten Speicher zuzugreifen. Für weitere Informationen siehe Mehrere Speicher im Verständnis des WebAssembly-Textformats.
Hinweis: WebAssembly-Speicher ist immer im Little-Endian-Format, unabhängig von der Plattform, auf der es ausgeführt wird. Aus Portabilitätsgründen sollten Sie daher mehrbyteige Werte in JavaScript mit DataView lesen und schreiben.
Erstellt ein neues Memory-Objekt.
Gibt den im Speicher enthaltenen Puffer zurück.
Erhöht die Größe der Speicherinstanz um eine angegebene Anzahl von WebAssembly-Seiten (jede ist 64KiB groß). Trennt den vorherigen buffer ab.
Es gibt zwei Möglichkeiten, ein WebAssembly.Memory-Objekt zu erhalten. Die erste Möglichkeit besteht darin, es über JavaScript zu konstruieren. Das folgende Snippet erstellt eine neue WebAssembly-Speicherinstanz mit einer anfänglichen Größe von 10 Seiten (640KiB) und einer maximalen Größe von 100 Seiten (6.4MiB). Ihre buffer-Eigenschaft gibt einen ArrayBuffer zurück.
Das folgende Beispiel (siehe memory.html auf GitHub, und live ansehen) lädt und instanziiert den geladenen "memory.wasm"-Bytecode mit der Funktion WebAssembly.instantiateStreaming(), während der oben erstellte Speicher importiert wird. Es speichert dann einige Werte in diesem Speicher, exportiert eine Funktion und verwendet die exportierte Funktion, um diese Werte zu summieren. Beachten Sie die Verwendung von DataView, um auf den Speicher zuzugreifen, sodass immer das Little-Endian-Format verwendet wird.
Eine andere Möglichkeit, ein WebAssembly.Memory-Objekt zu erhalten, besteht darin, es von einem WebAssembly-Modul exportieren zu lassen. Dieser Speicher kann über die exports-Eigenschaft der WebAssembly-Instanz zugänglich gemacht werden (nachdem der Speicher innerhalb des WebAssembly-Moduls exportiert wurde). Das folgende Beispiel importiert einen Speicher, der aus WebAssembly mit dem Namen memory exportiert wurde, und gibt dann das erste Element des Speichers aus, interpretiert als ein Uint32Array.
Standardmäßig sind WebAssembly-Speicher nicht geteilt. Sie können einen geteilten Speicher von JavaScript erstellen, indem Sie shared: true in das Initialisierungsobjekt des Konstruktors übergeben:
Die buffer-Eigenschaft dieses Speichers gibt einen SharedArrayBuffer zurück.
Das folgende Snippet erstellt eine neue WebAssembly-Speicherinstanz mit einem 64-Bit-Adressentyp. Die initial- und maximum-Werte müssen BigInt-Werte sein:
| WebAssembly JavaScript Interface # memories |
| Unknown specification |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.