gpt4 book ai didi

google-chrome - 在 Chrome + FF 中终止 Web Worker 后内存泄漏

转载 作者:行者123 更新时间:2023-12-05 07:59:08 31 4
gpt4 key购买 nike

我有一个网络应用程序需要在后台工作程序中执行繁重的 JavaScript 工作。我正在为此加载一个非常大的文件。此处的示例文件:https://www.dropbox.com/s/09b4d60d4c0i5dr/test.js

问题是将脚本加载到 Web Worker 然后终止该 worker 似乎会造成大量内存泄漏。 Chrome 丢失了大约 30MB,FF 丢失了大约 10MB。反复这样做最终会使浏览器崩溃。

示例代码:

<html>
<script type="text/javascript">
var worker = new Worker("test.js");

// Wait until the worker is loaded, then terminate it:
setTimeout(function() {
worker.terminate();
}, 5000);
</script>
</html>

JavaScript 文件本身不执行任何计算,它只是定义了一个巨大的函数。如果您想查看其内容,我建议您使用 VIM。

有什么想法吗?

更新

该错误与 Emscripten 无关。我设法用一个什么都不做的非常愚蠢的函数来重现它。我更新了演示 JS 文件。

最佳答案

根据 MDN,终止一个工作线程意味着“[the] 工作线程被立即杀死,没有机会完成其操作或自行清理”(https://developer.mozilla.org/en-US/docs/Web/Guide/Performance/Using_web_workers#Terminating_a_worker),所以我猜如果您希望您的 Web 应用程序在不泄漏太多内存的情况下运行,“杀死”一名工作人员不是 ATM 的合理选择......

关于google-chrome - 在 Chrome + FF 中终止 Web Worker 后内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22619172/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com