| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/WebAssembly/Reference/JavaScript_interface/Memory | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
L'objet WebAssembly.Memory est un ArrayBuffer ou SharedArrayBuffer redimensionnable qui contient des octets bruts de mmoire accessibles par un objet WebAssembly.Instance.
WebAssembly et JavaScript permettent tous deux de crer des objets Memory.
Si vous souhaitez accder la mmoire cre en JS depuis WebAssembly, ou inversement, vous pouvez exporter la mmoire du module vers JavaScript ou importer la mmoire de JavaScript vers le module lors de son instanciation.
l'origine, vous ne pouviez effectuer des oprations de mmoire que sur une seule mmoire dans le module Wasm, donc bien que plusieurs objets Memory puissent tre crs, cela n'avait aucun intrt.
Les implmentations plus rcentes permettent aux instructions de mmoire de WebAssembly d'oprer sur une mmoire dfinie.
Pour plus d'informations, voir Mmoires multiples dans Comprendre le format texte WebAssembly.
Note :
La mmoire WebAssembly est toujours au format petit-boutiste, quel que soit la plateforme sur laquelle elle est excute. Par consquent, pour des raisons de portabilit, vous devez lire et crire des valeurs multi-octets en JavaScript en utilisant DataView.
WebAssembly.Memory()Cre un nouvel objet Memory.
Memory.prototype.buffer Lecture seuleRetourne le tampon contenu dans la mmoire.
Memory.prototype.grow()Augmente la taille de l'instance de mmoire d'un nombre dfini de pages WebAssembly (chacune de 64 KiB). Dtache le buffer prcdent.
MemoryIl existe deux faons d'obtenir un objet WebAssembly.Memory. La premire consiste le construire partir de JavaScript. L'extrait suivant cre une nouvelle instance de mmoire WebAssembly avec une taille initiale de 10 pages (640 KiB) et une taille maximale de 100 pages (6,4 MiB). Sa proprit buffer retourne un ArrayBuffer.
const memory = new WebAssembly.Memory({
initial: 10,
maximum: 100,
});
L'exemple suivant (voir memory.html (angl.) sur GitHub, et la voir en direct (angl.)) rcupre et instancie le code binaire charg memory.wasm en utilisant la fonction WebAssembly.instantiateStreaming(), tout en important la mmoire cre la ligne ci-dessus. Il stocke ensuite des valeurs dans cette mmoire, exporte une fonction, et utilise la fonction exporte pour additionner ces valeurs. Notez l'utilisation de DataView pour accder la mmoire afin d'utiliser toujours le format petit-boutiste.
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 est petit boutiste
}
const sum = obj.instance.exports.accumulate(0, 10);
console.log(sum);
});
Une autre faon d'obtenir un objet WebAssembly.Memory est de l'avoir export par un module WebAssembly. Cette mmoire peut tre accde dans la proprit exports de l'instance WebAssembly (aprs que la mmoire ait t exporte dans le module WebAssembly). L'exemple suivant importe une mmoire exporte depuis WebAssembly avec le nom memory, puis affiche le premier lment de la mmoire, interprt comme un Uint32Array.
WebAssembly.instantiateStreaming(fetch("memory.wasm")).then((obj) => {
const values = new DataView(obj.instance.exports.memory.buffer);
console.log(values.getUint32(0, true));
});
Par dfaut, les mmoires WebAssembly ne sont pas partages. Vous pouvez crer une mmoire partage depuis JavaScript en passant shared: true dans l'objet d'initialisation du constructeur :
const memory = new WebAssembly.Memory({
initial: 10,
maximum: 100,
shared: true,
});
La proprit buffer de cette mmoire retournera un objet SharedArrayBuffer.
| Spcification |
|---|
| WebAssembly JavaScript Interface # memories |
| Unknown specification |
Cette page a t modifie le 17 avr. 2026 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |