我是靠谱客的博主 文艺水壶,最近开发中收集的这篇文章主要介绍WebAssembly【一】Memory 学习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Memory

Linear memory 是 WebAssembly 的另外一种构建块,通常用于表示编译的 C/C++ 应用程序的整个堆。从 JavaScript 的角度,linear memory(后面称作 memory)可以被认为是一个可以调整大小的 ArrayBuffer,它是通过尽心优化的,用于负载和存储的低开销沙箱。

Memories 可以被 JavaScript 创建,需要提供出初始大小和最大的大小这些选项。

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

首先要注意的是,“initial” 和 “maximum” 的单位是 WebAssembly pages,它固定为64KiB。这样,上面的 memory 默认就是 10 pages,640Kib,最大的尺寸是6.4MiB。

在 JavaScript 中大多数的字节操作都是在 ArrayBuffer 和 类型数组里面,而不是建立了一套新的不兼容的操作方式,WebAssembly.Memory 通过简单的提供一个返回 ArrayBuffer 的 buffer getter 来返回字节码。比如,将 42 写入 linear memory 的第一个位置。

new Uint32Array(memory.buffer)[0] = 42;

一旦被创建,可以通过 Memory.Prototype.grow 进行扩充,还是以 WebAssembly pages 为单位当做参数。

memory.grow(1);

如果 maximum 供不应求了,通过 grow 增加的尺寸大于 maximum,就会抛出 RangeError 异常。引擎利用这个提供的上限来提前预留内存,这样可以使调整大小更有效率。

最后

以上就是文艺水壶为你收集整理的WebAssembly【一】Memory 学习的全部内容,希望文章能够帮你解决WebAssembly【一】Memory 学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部