【问题标题】:Why does Chrome eventually throw "Out of memory: wasm memory" after repeatedly refreshing a page that uses WebAssembly?为什么 Chrome 在反复刷新使用 WebAssembly 的页面后最终会抛出“Out of memory: wasm memory”?
【发布时间】: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


    【解决方案1】:

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

    只有在 Chrome 的开发者工具打开时才会发生。

    【讨论】:

      猜你喜欢
      • 2019-03-20
      • 1970-01-01
      • 2019-11-25
      • 2019-11-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多