Movatterモバイル変換


[0]ホーム

URL:


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

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。

View in EnglishAlways switch to English

WebAssembly.Memory()

WebAssembly.Memory オブジェクトはサイズ変更可能なArrayBuffer またはSharedArrayBuffer であり、 WebAssemblyInstance からアクセスする生のバイト列のメモリーを持ちます。

JavaScript または WebAssembly コードから生成されたメモリーは JavaScript と WebAssembly のどちらからもアクセス、変更が可能になります。

コンストラクター

WebAssembly.Memory()

新しいMemory オブジェクトを生成します。

インスタンスプロパティ

Memory.prototype.buffer

メモリーに格納されているバッファーを返すアクセサープロパティです。

インスタンスメソッド

Memory.prototype.grow()

指定した WebAssembly ページ (64KB で 1 単位) の数でメモリーのインスタンスのサイズを増やします。

新しい Memory オブジェクトの生成

WebAssembly.Memory オブジェクトを取得する方法は 2 つあります。 1 つ目は JavaScript から生成する方法です。以下の例では、初期サイズが 10 ページ (640KiB) 、最大サイズが 100 ページ (6.4MiB) で新しい WebAssembly Memory インスタンスを生成しています。そのbuffer プロパティはArrayBuffer を返します。

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

次の例では (GitHub 上のmemory.html および実行例も参照)、 memory.wasm バイトコードをWebAssembly.instantiateStreaming() メソッドを使用して読み込みんでインスタンス化し、その上の行で生成されたメモリーにインポートします。それから、メモリーにいくつかの値を格納し、関数をエクスポートして使用し、いくつかの値を合計します。

js
WebAssembly.instantiateStreaming(fetch("memory.wasm"), {  js: { mem: memory },}).then((obj) => {  var i32 = new Uint32Array(memory.buffer);  for (var i = 0; i < 10; i++) {    i32[i] = i;  }  var sum = obj.instance.exports.accumulate(0, 10);  console.log(sum);});

WebAssembly.Memory オブジェクトを取得する 2 つ目の方法は、 WebAssembly モジュールによってエクスポートされることです。このメモリーは WebAssembly インスタンスのexports プロパティで (メモリーが WebAssembly モジュール内でエクスポートされた後に) アクセスできます。次のスニペットは、 WebAssembly からエクスポートされたメモリーをmemoryという名前でインポートし、メモリーの最初の要素を Uint32Array として解釈して表示しています。

js
WebAssembly.instantiateStreaming(fetch("memory.wasm")).then((obj) => {  var i32 = new Uint32Array(obj.instance.exports.memory.buffer);  console.log(i32[0]);});

共有メモリーの作成

既定では、 WebAssembly のメモリーは共有されていません。共有メモリーを作成するには、コンストラクターの初期化オブジェクトにshared: true を渡します。

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

このメモリーのbuffer プロパティはSharedArrayBuffer を返します。

仕様書

Specification
WebAssembly JavaScript Interface
# memories
Unknown specification

ブラウザーの互換性

webassembly.api.Memory

webassembly.multiMemory

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2026 Movatter.jp