百科狗-知识改变命运!
--

WebAssembly.Memory() - JavaScript WebAssembly 对象

乐乐1年前 (2023-11-21)阅读数 18#技术干货
文章标签实例

WebAssembly.Memory()

WebAssembly.Memory()构造函数创建一个新的Memory对象。该对象的buffer属性是一个可调整大小的 ArrayBuffer ,其内存储的是 WebAssembly 实例所访问内存的原始字节码。

从 JavaScript 或 WebAssembly 中所创建的内存,可以由 JavaScript 或 WebAssembly 来访问及更改。

语法

var myMemory = new WebAssembly.Memory(memoryDescriptor);

参数

memoryDescriptor一个可包含以下成员的对象:initialWebAssembly 内存的初始大小,以 WebAssembly 页面为单位。maximum 可选以 WebAssembly 页面为单位,可允许 WebAssembly 内存的最大值。当存在此属性时,此参数用于提示引擎预先保留内存。但是,引擎可能会忽略或限制此预留请求。通常情况下大多数 WebAssembly 模块不需要设置最大值

注意: A WebAssembly 页面的大小为一个常量 65,536 字节,即64KB。

异常

  • 如果memoryDescriptor的类型不是对象,则抛出TypeError异常。
  • 如果指定了maximum并且小于initial,则抛出RangeError异常。

Memory实例

所有Memory实例都继承自Memory()构造函数的原型对象—这个原型可被修改并影响到所有的Memory实例。

实例属性

Memory.prototype.constructor返回创建此对象实例的函数。默认情况下,它是WebAssembly.Memory()构造函数。Memory.prototype.buffer一个访问器,用于返回内存中包含的缓冲区。

实例方法

Memory.prototype.grow()通过指定 WebAssembly 页面数量来增加内存实例的大小。(每个页面大小为64KB)

示例

有两种方法可以获得WebAssembly.Memory对象。第一种方法是由 JavaScript 来创建。以下示例创建了一个新的 WebAssembly 内存实例,初始大小为 10页(640KB),最大值设置为 100页(6.4MB)。

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

WebAssembly.Memory() - JavaScript WebAssembly 对象

获取WebAssembly.Memory对象的第二种方法是从 WebAssembly 模块中导出。以下示例(详见GitHub页面 memory.html ,也可以用浏览器运行查看)使用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 

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)