为什么 Chrome 在反复刷新使用 WebAssembly 的页面后最终会抛出“内存不足:wasm 内存”?

Xha*_*lie 4 google-chrome webpack webassembly

我想相信刷新浏览器窗口或选项卡不会泄漏。不幸的是,就 WebAssembly 而言,情况似乎并非如此。

我用 Rust 构建了一个 WebAssembly 板条箱。crate 的编译大小约为 360 Kb(在内容压缩之前),并且 crate 在 Firefox 甚至 iOS 上的 Safari 中都可以正常工作。但是,我在 Chrome 中遇到了很多问题,其中之一是刷新使用.wasm最终导致控制台内存不足错误的页面。

该页面在大约 35 次刷新后正常工作,然后抛出以下内容:

Uncaught (in promise) RangeError: WebAssembly Instantiation: Out of memory: wasm memory
Run Code Online (Sandbox Code Playgroud)

在此之后,该选项卡没有用,但打开一个新选项卡并加载页面按预期工作——同样,大约前 35 次刷新。

这是浏览器中的错误还是我在代码中做错了什么?如果它是一个错误,有什么办法可以解决它吗?(并不是说我希望它会在生产中表现出来,但无论如何......)

(据推测,错误消息中提到的承诺是 返回的import('...')那个。我正在使用 webpack,所以我受到了https://github.com/webpack/webpack/issues/6615 的影响)

Xha*_*lie 5

这显然是 Chrome 中已确认的错误:https : //bugs.chromium.org/p/chromium/issues/detail?id=935169

它仅在 Chrome 的开发人员工具打开时发生。