--- title: WebAssembly.Memory() slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory ---
WebAssembly.Memory()
생성자는 WebAssembly Instance
가 액세스하는 메모리의 원시 바이트를 가진 ArrayBuffer(크기조정이 가능)인 새 Memory
객체를 만듭니다.
메모리는 자바스크립트 혹은 WebAssembly 코드 안에서 만들어지며 자바스크립트 그리고 WebAssembly에서 접근하거나 변경이 가능합니다.
var myMemory = new WebAssembly.Memory(memoryDescriptor);
maximum
매개 변수는 엔진에 대해 메모리를 전면에 예약하도록 합니다. 그러나 엔진은 이 예약 요청을 무시하거나 클램핑 할 수 있습니다. 일반적으로 대부분의 WebAssembly 모듈은 maximum
값을 설정할 필요가 없습니다.Note: WebAssembly 페이지의 크기는 65,536 바이트로 64KiB로 고정되어 있습니다.
memoryDescriptor
가 object 유형이 아닌 경우 {{jsxref ( "TypeError")}}가 발생합니다.maximum
이 지정되고 initial
보다 작은 경우 {{jsxref ( "RangeError")}}가 발생합니다.Memory
instances모든 Memory
인스턴스는 Memory()
생성자의 prototype object를 상속합니다.이 인스턴스는 모든 Memory
인스턴스에 적용되도록 수정할 수 있습니다.
Memory.prototype.constructor
WebAssembly.Memory
객체를 가져 오는 두 가지 방법이 있습니다. 첫 번째 방법은 JavaScript에서 생성하는 것입니다. 다음 예제에서는 초기 크기가 10 페이지 (640KiB)이고 최대 크기가 100 페이지 (6.4MiB) 인 새 WebAssembly 메모리 인스턴스를 만듭니다.
var memory = new WebAssembly.Memory({initial:10, maximum:100});
WebAssembly.Memory
객체를 가져 오는 두 번째 방법은 WebAssembly 모듈에서 내보냅니다. 다음 예제는 (GitHub의 memory.html을 보세요. 라이브로 보기) 생성된 메모리를 가져 오는 동안 {{jsxref("WebAssembly.instantiateStreaming()")}} 메소드를 사용하여로드 된 memory.wasm 바이트 코드를 가져 와서 인스턴스화합니다. 위의 줄에. 그런 다음 메모리에 일부 값을 저장 한 다음 함수를 내 보낸 다음 일부 값의 합계에 사용합니다.
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); });
Specification | Status | Comment |
---|---|---|
{{SpecName('WebAssembly JS', '#webassemblymemory-objects', 'Memory')}} | {{Spec2('WebAssembly JS')}} | Initial draft definition. |
{{Compat("javascript.builtins.WebAssembly.Memory")}}