【发布时间】:2019-07-29 02:40:15
【问题描述】:
我愿意相信刷新浏览器窗口或标签不会泄漏。不幸的是,当涉及到 WebAssembly 时,情况似乎并非如此。
我已经用 Rust 构建了一个 WebAssembly crate。 crate 的编译大小约为 360 Kb(在内容压缩之前),并且 crate 在 Firefox 甚至在 iOS 上的 Safari 上运行良好。但是,我在 Chrome 中遇到了许多问题,其中之一是刷新使用 .wasm 的页面最终会导致控制台中出现内存不足的错误。
该页面可以正常刷新大约 35 次,然后抛出以下内容:
Uncaught (in promise) RangeError: WebAssembly Instantiation: Out of memory: wasm memory
在此之后,该选项卡无用,但打开一个新选项卡并加载页面按预期工作 - 再次,大约前 35 次刷新。
这是浏览器中的错误还是我在代码中做错了什么?如果它是一个错误,有没有办法解决它? (并不是说我期望它会在生产中表现出来,但无论如何......)
(推测错误信息中提到的promise是import('...')返回的那个。我使用的是webpack,所以我受到https://github.com/webpack/webpack/issues/6615的影响)
【问题讨论】:
标签: google-chrome webpack webassembly