为何WebAssembly.Memory以页面数而非字节数作为initial和maximum的单位
关于Web内存页面大小的问题解析
- 你提到的64KB页面大小,是当前主流浏览器对Web内存页面的常见实现值,但它并非跨平台/跨环境的固定常量,规范也没有强制要求必须是这个值。
- 这个大小是浏览器基于操作系统底层内存页做的上层封装:多数桌面系统的原生内存页是4KB或8KB,浏览器把多个系统页合并成更大的逻辑页面,主要是为了减少内存碎片、优化SharedArrayBuffer这类跨线程内存访问的性能,64KB是目前厂商达成的一个“默契值”。
- 规范里没有明确规定大小的原因,是为了给浏览器厂商留足优化空间——比如未来如果出现更适合的硬件/系统内存页规格,厂商可以灵活调整这个值,不用修改规范内容。
- 如果你需要准确获取当前运行环境的内存页面大小,别硬编码64KB,直接用
Atomics.pageSizeAPI,它会返回当前环境的实际页面字节数,这才是可靠的方式。
内容的提问来源于stack exchange,提问作者mako
相关产品推荐
相关产品推荐

