HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
View in English Always switch to English
WebAssembly.Memory オブジェクトはサイズ変更可能な ArrayBuffer または SharedArrayBuffer であり、 WebAssembly Instance からアクセスする生のバイト列のメモリーを持ちます。
WebAssembly.Memory
ArrayBuffer
SharedArrayBuffer
Instance
JavaScript または WebAssembly コードから生成されたメモリーは JavaScript と WebAssembly のどちらからもアクセス、変更が可能になります。
WebAssembly.Memory()
新しい Memory オブジェクトを生成します。
Memory
Memory.prototype.buffer
メモリーに格納されているバッファーを返すアクセサープロパティです。
Memory.prototype.grow()
指定した WebAssembly ページ (64KB で 1 単位) の数でメモリーのインスタンスのサイズを増やします。
WebAssembly.Memory オブジェクトを取得する方法は 2 つあります。 1 つ目は JavaScript から生成する方法です。以下の例では、初期サイズが 10 ページ (640KiB) 、最大サイズが 100 ページ (6.4MiB) で新しい WebAssembly Memory インスタンスを生成しています。その buffer プロパティは ArrayBuffer を返します。
buffer
var memory = new WebAssembly.Memory({ initial: 10, maximum: 100 });
次の例では (GitHub 上の memory.html および実行例も参照)、 memory.wasm バイトコードを WebAssembly.instantiateStreaming() メソッドを使用して読み込みんでインスタンス化し、その上の行で生成されたメモリーにインポートします。それから、メモリーにいくつかの値を格納し、関数をエクスポートして使用し、いくつかの値を合計します。
WebAssembly.instantiateStreaming()
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 として解釈して表示しています。
exports
memory
WebAssembly.instantiateStreaming(fetch("memory.wasm")).then((obj) => { var i32 = new Uint32Array(obj.instance.exports.memory.buffer); console.log(i32[0]); });
既定では、 WebAssembly のメモリーは共有されていません。共有メモリーを作成するには、コンストラクター の初期化オブジェクトに shared: true を渡します。
shared: true
let memory = new WebAssembly.Memory({ initial: 10, maximum: 100, shared: true, });
このメモリーの buffer プロパティは SharedArrayBuffer を返します。
Enable JavaScript to view this browser compatibility table.