我希望相信刷新浏览器窗口或选项卡不会泄漏信息。不幸的是,当涉及WebAssembly时情况并非如此。
我已经用Rust构建了一个WebAssembly包。该包的编译大小约为360 KB(在内容压缩之前),在Firefox甚至iOS上的Safari上该包可以正常工作。然而,在Chrome中我遇到了很多问题,其中一个问题是在使用 .wasm
的页面上刷新后最终会在控制台中显示内存不足错误。
该页面刷新大约35次后就会出现问题,并显示以下内容:
Uncaught (in promise) RangeError: WebAssembly Instantiation: Out of memory: wasm memory
在此之后,该选项卡将无效,但打开新选项卡并加载页面可按预期工作——在前35个刷新内都是如此。这是浏览器的错误还是我的代码有问题?如果是一个错误,有没有办法解决它?(尽管我不认为它会在生产中表现出来...)(显然,错误消息中提到的承诺是
import('...')
返回的承诺。我正在使用webpack,因此我受到https://github.com/webpack/webpack/issues/6615的影响)。