Почему в конечном итоге Chrome выбрасывает сообщение "Out of memory: wasm memory" после многократного обновления страницы, использующей WebAssembly?
Я хотел бы полагать, что обновление окна браузера или вкладки не может утечь. К сожалению, это не тот случай, когда речь идет о WebAssembly.
Я построил ящик WebAssembly с Rust. Размер скомпилированного ящика составляет примерно 360 Кб (до сжатия контента), и он отлично работает в Firefox и даже в Safari на iOS. Тем не менее, у меня возникают многочисленные проблемы в Chrome, одна из которых заключается в обновлении страницы, которая использует .wasm
в конечном итоге приводит к ошибке нехватки памяти в консоли.
Страница прекрасно работает около 35 обновлений, а затем выдает следующее:
Uncaught (in promise) RangeError: WebAssembly Instantiation: Out of memory: wasm memory
После этого вкладка становится бесполезной, но открытие новой вкладки и загрузка страницы работает, как и ожидалось - опять же, примерно для первых 35 обновлений.
Это ошибка в браузере или я что-то не так делаю в своем коде? Если это ошибка, есть ли способ обойти это? (Не то, чтобы я ожидал, что это проявится в производстве, но в любом случае...)
(Предположительно, обещание, указанное в сообщении об ошибке, возвращается import('...')
, Я использую веб-пакет, и на меня влияет https://github.com/webpack/webpack/issues/6615)
1 ответ
Это явно подтвержденная ошибка в Chrome: https://bugs.chromium.org/p/chromium/issues/detail?id=935169
Это происходит только тогда, когда инструменты разработчика Chrome открыты.