This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

WebAssembly.Memory()

WebAssembly.Memory() ์ƒ์„ฑ์ž๋Š” WebAssembly Instance๊ฐ€ ์•ก์„ธ์Šคํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์›์‹œ ๋ฐ”์ดํŠธ๋ฅผ ๊ฐ€์ง„ ArrayBuffer(ํฌ๊ธฐ์กฐ์ •์ด ๊ฐ€๋Šฅ)์ธ ์ƒˆ Memory ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ๋Š” JavaScript ํ˜น์€ WebAssembly ์ฝ”๋“œ ์•ˆ์—์„œ ๋งŒ๋“ค์–ด์ง€๋ฉฐ JavaScript ๊ทธ๋ฆฌ๊ณ  WebAssembly์—์„œ ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Syntax

js
var myMemory = new WebAssembly.Memory(memoryDescriptor);

Parameters

memoryDescriptor

๋‹ค์Œ์˜ ๋ฉค๋ฒ„๋ฅผ ๊ฐ€์งˆ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค._ initial _ : WebAssembly Page์˜ ๋‹จ์œ„๋ณ„ WebAssembly ๋ฉ”๋ชจ๋ฆฌ์˜ ์ดˆ๊ธฐ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.

maximum Optional

WebAssembly ๋ฉ”๋ชจ๋ฆฌ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” WebAssembly ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์ฆ๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด maximum ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ์—”์ง„์— ๋Œ€ํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ „๋ฉด์— ์˜ˆ์•ฝํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—”์ง„์€ ์ด ์˜ˆ์•ฝ ์š”์ฒญ์„ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ํด๋žจํ•‘ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ WebAssembly ๋ชจ๋“ˆ์€ maximum ๊ฐ’์„ ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  : WebAssembly ํŽ˜์ด์ง€์˜ ํฌ๊ธฐ๋Š” 65,536 ๋ฐ”์ดํŠธ๋กœ 64KiB๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Exceptions

  • memoryDescriptor๊ฐ€ object ์œ ํ˜•์ด ์•„๋‹Œ ๊ฒฝ์šฐ TypeError๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • maximum์ด ์ง€์ •๋˜๊ณ  initial๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ RangeError๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Memory instances

๋ชจ๋“  Memory ์ธ์Šคํ„ด์Šค๋Š” Memory()์ƒ์„ฑ์ž์˜ prototype object๋ฅผ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค.์ด ์ธ์Šคํ„ด์Šค๋Š” ๋ชจ๋“  Memory ์ธ์Šคํ„ด์Šค์— ์ ์šฉ๋˜๋„๋ก ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Instance properties

Memory.prototype.constructor

์ด ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ ํ•œ ํ•จ์ˆ˜๋ฅผ ๋Œ๋ ค์ค๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๊ฒƒ์€ WebAssembly.Memory() ์ƒ์„ฑ์ž์ž…๋‹ˆ๋‹ค.

Memory.prototype.buffer

๋ฉ”๋ชจ๋ฆฌ์— ํฌํ•จ ๋œ ๋ฒ„ํผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ ‘๊ทผ ์ž ์†์„ฑ์ž…๋‹ˆ๋‹ค.

Instance methods

Memory.prototype.grow()

์ง€์ •๋œ ์ˆ˜์˜ WebAssembly ํŽ˜์ด์ง€ (๊ฐ๊ฐ 64KB ํฌ๊ธฐ)๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ ์ธ์Šคํ„ด์Šค์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.

Examples

WebAssembly.Memory ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ JavaScript์—์„œ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ์—์„œ๋Š” ์ดˆ๊ธฐ ํฌ๊ธฐ๊ฐ€ 10 ํŽ˜์ด์ง€ (640KiB)์ด๊ณ  ์ตœ๋Œ€ ํฌ๊ธฐ๊ฐ€ 100 ํŽ˜์ด์ง€ (6.4MiB) ์ธ ์ƒˆ WebAssembly ๋ฉ”๋ชจ๋ฆฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

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

WebAssembly.Memory ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ WebAssembly ๋ชจ๋“ˆ์—์„œ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ๋Š” (GitHub์˜ memory.html์„ ๋ณด์„ธ์š”. ๋ผ์ด๋ธŒ๋กœ ๋ณด๊ธฐ) ์ƒ์„ฑ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ๋™์•ˆ WebAssembly.instantiateStreaming() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ๋กœ๋“œ ๋œ memory.wasm ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ ์™€์„œ ์ธ์Šคํ„ด์Šคํ™”ํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์ค„์—. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฉ”๋ชจ๋ฆฌ์— ์ผ๋ถ€ ๊ฐ’์„ ์ €์žฅ ํ•œ ๋‹ค์Œ ํ•จ์ˆ˜๋ฅผ ๋‚ด ๋ณด๋‚ธ ๋‹ค์Œ ์ผ๋ถ€ ๊ฐ’์˜ ํ•ฉ๊ณ„์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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);
});

๋ช…์„ธ์„œ

Specification
WebAssembly JavaScript Interface
# memories
Unknown specification

๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ

webassembly.api.Memory

webassembly.multiMemory

See also