Movatterモバイル変換


[0]ホーム

URL:


  1. WebAssembly
  2. Reference
  3. WebAssembly
  4. WebAssembly.Memory()
  5. WebAssembly.Memory() コンストラクター

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

View in EnglishAlways switch to English

WebAssembly.Memory() コンストラクター

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2017年10月.

WebAssembly.Memory() コンストラクターは新しいMemory オブジェクトを生成します。これはbuffer プロパティがサイズ変更可能なArrayBuffer またはSharedArrayBuffer であり、 WebAssembly のInstance からアクセスする生のバイト列のメモリーであるものです。

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

構文

js
new WebAssembly.Memory(memoryDescriptor);

引数

memoryDescriptor

以下のメンバーを含むことができるオブジェクトです。

initial

WebAssembly メモリーの初期サイズで、単位は WebAssembly ページ数です。

maximum省略可

WebAssembly メモリーを拡張できる最大サイズで、単位は WebAssembly ページ数です。存在する場合、maximum 引数はエンジンがメモリーを予約するヒントとして使用されます。ただし、エンジンはこの予約リクエストを無視したり固定したりすることがあります。一般的に、ほとんどの WebAssembly モジュールではmaximum を設定する必要はありません。

shared省略可

論理値で、このメモリーを共有メモリーにするかどうかを定義します。true に設定すると、共有メモリーになります。既定値はfalse です。

メモ:WebAssembly ページは 65,536 バイト、すなわち 64KiB の固定長です。

例外

  • memoryDescriptor がオブジェクトでない場合は、TypeError が発生します。
  • maximum が設定されており、かつinitial よりも小さい場合は、RangeError が発生します。

新しい Memory インスタンスの作成

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

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

2 つ目は WebAssembly モジュールからエクスポートされたWebAssembly.Memory オブジェクトを使用する方法です。次の例では (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 のメモリーは共有されていません。共有メモリーを作成するには、コンストラクターの初期化オブジェクトにshared: true を渡してください。

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

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

仕様書

Specification
WebAssembly JavaScript Interface
# dom-memory-memory

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2026 Movatter.jp