setInterval造成的浏览器内存不足,直接停止运行
本帖最后由 2233@ 于 2023-3-23 09:12 编辑起因是我用window.open打开了十一个窗口,每个窗口都有setIntaerval,间隔是50,运行了一段时间就,全部窗口崩了,我有清除setIntaerval这个定时器,为什么还会内存不足呢。
代码如下function b() {
var a = setInterval(function() {
clearInterval(a);
b();
}, 50);
} 没实验,猜一个,50ms的间隔太短了,可能有的时候setInterval调用了多次,这样就会覆盖之前的记录(a),导致泄漏
哥哥试试 setTimeout ? 王一之 发表于 2023-3-23 09:42
没实验,猜一个,50ms的间隔太短了,可能有的时候setInterval调用了多次,这样就会覆盖之前的记录(a),导 ...
https://mp-462a6816-8fee-4177-a7d3-8c2791cf8b31.cdn.bspapp.com/cloudstorage/024f2c91-a546-403a-91a7-0e16ed31b27b.bmp
一之哥哥换成setTimeout也一样,这次开了15个 我认为setTimeout和setInterval在那个嵌套函数里都是重复没有区别,我觉得是没有清除到位 方便来个可复现的demo做测试吗...
从理想情况下来说
内存占用达到一定标准就会GC掉的... 李恒道 发表于 2023-3-23 10:58
方便来个可复现的demo做测试吗...
从理想情况下来说
内存占用达到一定标准就会GC掉的... ...
那个给不了链接会有我的信息,我试了上次问的类似的异想少女,没有崩过,那应该不是定时器问题 李恒道 发表于 2023-3-23 10:58
方便来个可复现的demo做测试吗...
从理想情况下来说
内存占用达到一定标准就会GC掉的... ...
哥哥,你知道canvas的声音怎么关闭吗或者关闭整个标签页的声音 2233@ 发表于 2023-3-23 12:53
哥哥,你知道canvas的声音怎么关闭吗或者关闭整个标签页的声音
这个我还是推荐用浏览器的一键静音
如果关闭canvas的声音的话
可以看看他用的api是什么
查一下对应的api文档
一般来说感觉可能用了webaudio或者audio标枪 你这是递归,本来就很容易爆内存,setInterval本身就是循环执行的,为什么要清除定时器再重新启用一个呢?多余的函数调用确实会增加内存消耗。 cxxjackie 发表于 2023-3-23 22:29
你这是递归,本来就很容易爆内存,setInterval本身就是循环执行的,为什么要清除定时器再重新启用一个呢? ...
之前不是递归嵌套的,就只有setInterval也会造成浏览器内存不足
页:
[1]
2