Movatterモバイル変換


[0]ホーム

URL:


  1. WebAssembly
  2. Reference
  3. WebAssembly
  4. WebAssembly.Memory

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

WebAssembly.Memory

DasWebAssembly.Memory Objekt ist ein skalierbarerArrayBuffer oderSharedArrayBuffer, der rohe Bytespeicher enthält, auf den von einerWebAssembly.Instance zugegriffen wird.

Sowohl WebAssembly als auch JavaScript könnenMemory Objekte erstellen.Wenn Sie auf den im JS erstellten Speicher aus WebAssembly zugreifen möchten oder umgekehrt, können Sie den Speicher aus dem Modul nach JavaScript exportieren oder Speicher von JavaScript in das Modul importieren, wenn esinstanziiert wird.

Ursprünglich konnten Sie Speicheroperationen nur auf einem einzelnen Speicher im Wasm-Modul ausführen, daher gab es zwar die Möglichkeit, mehrereMemory Objekte zu erstellen, aber es ergab keinen Sinn, dies zu tun.Neuere Implementierungen erlauben es, dass WebAssemblySpeicheranweisungen auf einen bestimmten Speicher ausgeführt werden.Für weitere Informationen sieheMehrere Speicher im AbschnittVerständnis des WebAssembly-Textformats.

Hinweis:WebAssembly-Speicher ist immer im Little-Endian-Format, unabhängig von der Plattform, auf der es läuft. Daher sollten Sie für die Portabilität Multi-Byte-Werte in JavaScript mitDataView lesen und schreiben.

Konstruktor

WebAssembly.Memory()

Erstellt ein neuesMemory Objekt.

Instanzeigenschaften

Memory.prototype.bufferSchreibgeschützt

Gibt den im Speicher enthaltenen Puffer zurück.

Instanzmethoden

Memory.prototype.grow()

Erhöht die Größe der Speicherinstanz um eine angegebene Anzahl von WebAssembly-Seiten (jede ist 64KiB groß). Trennt den vorherigenbuffer.

Beispiele

Erstellen eines neuen Memory-Objekts

Es gibt zwei Möglichkeiten, einWebAssembly.Memory Objekt zu erhalten. Der erste Weg ist, es aus JavaScript zu konstruieren. Das folgende Snippet erstellt eine neue WebAssembly Memory-Instanz mit einer anfänglichen Größe von 10 Seiten (640KiB) und einer maximalen Größe von 100 Seiten (6.4MiB). Diebuffer Eigenschaft gibt einenArrayBuffer zurück.

js
const memory = new WebAssembly.Memory({  initial: 10,  maximum: 100,});

Das folgende Beispiel (siehememory.html auf GitHub, undlive ansehen) lädt und instanziiert den geladenen "memory.wasm" Bytecode mit derWebAssembly.instantiateStreaming() Funktion unter der Einbeziehung des oben erstellten Speichers. Anschließend speichert es einige Werte in diesem Speicher, exportiert eine Funktion und verwendet die exportierte Funktion, um diese Werte zu summieren. Beachten Sie die Verwendung vonDataView, um auf den Speicher zuzugreifen, sodass immer das Little-Endian-Format verwendet wird.

js
const memory = new WebAssembly.Memory({  initial: 10,  maximum: 100,});WebAssembly.instantiateStreaming(fetch("memory.wasm"), {  js: { mem: memory },}).then((obj) => {  const summands = new DataView(memory.buffer);  for (let i = 0; i < 10; i++) {    summands.setUint32(i * 4, i, true); // WebAssembly is little endian  }  const sum = obj.instance.exports.accumulate(0, 10);  console.log(sum);});

Eine andere Möglichkeit, einWebAssembly.Memory Objekt zu erhalten, besteht darin, es von einem WebAssembly-Modul exportieren zu lassen. Dieser Speicher kann in derexports Eigenschaft der WebAssembly-Instanz zugegriffen werden (nachdem der Speicher innerhalb des WebAssembly-Moduls exportiert wurde). Das folgende Beispiel importiert einen aus WebAssembly exportierten Speicher mit dem Namenmemory und druckt dann das erste Element des Speichers aus, interpretiert als einUint32Array.

js
WebAssembly.instantiateStreaming(fetch("memory.wasm")).then((obj) => {  const values = new DataView(obj.instance.exports.memory.buffer);  console.log(values.getUint32(0, true));});

Erstellen eines geteilten Speichers

Standardmäßig sind WebAssembly-Speicher nicht geteilt. Sie können einengeteilten Speicher aus JavaScript erstellen, indem Sieshared: true im Initialisierungsobjekt des Konstruktors übergeben:

js
const memory = new WebAssembly.Memory({  initial: 10,  maximum: 100,  shared: true,});

Diebuffer Eigenschaft dieses Speichers gibt einenSharedArrayBuffer zurück.

Spezifikationen

Specification
WebAssembly JavaScript Interface
# memories
Unknown specification

Browser-Kompatibilität

webassembly.api.Memory

webassembly.multiMemory

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2026 Movatter.jp