MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Cette fonction est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

Le constructeur WebAssembly.Memory() crée un nouvel objet Memory qui représente un espace mémoire WebAssembly sous la forme d'un objet ArrayBuffer redimensionnable qui contient les octets de mémoire accessibles par une instance.

Un espace mémoire créé depuis du code JavaScript ou depuis du code WebAssembly sera accessible et modifiable (mutable) depuis JavaScript et depuis WebAssembly.

Syntaxe

var maMemoire = new WebAssembly.Memory(descripteurMemoire);

Paramètres

descripteurMemoire
Un objet qui contient les propriétés suivantes :
initial
La taille initiale de cet espace mémoire WebAssembly, exprimée en nombre de pages WebAssembly.
maximum Facultatif
La taille maximale autorisée pour cet espace mémoire WebAssembly, exprimée en nombre de pages WebAssembly. Lorsque ce paramètre est utilisé, il est fournit comme indication au moteur pour que celui-ci réserve l'espace mémoire correspondant. Toutefois, le moteur peut choisir d'ignorer cette indication. Dans la plupart des cas, il n'est pas nécessaire d'indiquer un maximum pour les modules WebAssembly.

Note : Une page mémoire WebAssembly correspond à une taille fixe de 65 536 octets, soit environ 64 Ko.

Exceptions

  • Si descripteurMemoire n'est pas un objet, une exception TypeError sera levée.
  • Si maximum est indiqué et qu'il est inférieur à initial, une exception RangeError sera levée.

Méthodes du constructeur Memory

Aucune.

Instances de Memory

Toutes les instances de Memory héritent des propriétés du prototype du constructeur Memory() qui peut être utilisé afin de modifier le comportement de l'ensemble des instances de Memory.

Propriétés

Memory.prototype.constructor
Renvoie la fonction qui a créé l'instance de l'objet. Par défaut, c'est le constructeur WebAssembly.Memory().
Memory.prototype.buffer
Une propriété d'accesseur qui renvoie le tampon contenu dans l'espace mémoire.

Méthodes

Memory.prototype.grow()
Cette méthode permet d'augmenter la taille de l'espace mémoire d'un nombre de pages donné (dont chacune mesure 64 Ko).

Exemples

Il existe deux façons de créer un objet WebAssembly.Memory. La première consiste à le créer explicitement en JavaScript. Avec l'instruction qui suit, on crée un espace mémoire avec une taille initiale de 10 pages (soit 640 Ko) et une taille maximale de 100 pages (soit 6,4 Mo).

var memoire = new WebAssembly.Memory({initial:10, maximum:100});

La seconde consiste à représenter un espace mémoire en l'exportant depuis un module WebAssembly. Dans l'exemple suivant (tiré de memory.html sur GitHub et qui dispose d'une démonstration), on récupère et on instancie le bytecode memory.wasm grâce à notre fonction utilitaire fetchAndInstantiate(). Ensuite, on exporte un espace mémoire du module, on y stocke des valeurs puis on exporte une fonction qu'on utilise afin d'additionner certaines valeurs :

fetchAndInstantiate('memory.wasm').then(function(instance) {
  var i32 = new Uint32Array(instance.exports.mem.buffer);
  for (var i = 0; i < 10; i++) {
    i32[i] = i;
  }
  var sum = instance.exports.accumulate(0, 10);
  console.log(sum);
});

Spécifications

Spécification État Commentaires
Web Assembly JavaScript API
La définition de 'Memory' dans cette spécification.
Projet Brouillon de définition initiale pour WebAssembly.

Compatibilité des navigateurs

Fonctionnalité Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Support simple 57 15[2] 52 (52)[1] Pas de support 44 11
Fonctionnalité Chrome pour Android Webview Android Edge Mobile Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple 57 57 Pas de support 52.0 (52)[1] Pas de support Pas de support 11

[1] WebAssembly est activé dans Firefox 52+ mais est désactivé pour Firefox 52 Extended Support Release (ESR).

[2] Actuellement pris en charge via la préférence Fonctionnalités JavaScript expérimentales, voir ce billet (en anglais) pour plus d'informations.

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,