上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
12下一页
返回列表 发新帖

setInterval造成的浏览器内存不足,直接停止运行

[复制链接]
  • TA的每日心情
    开心
    2023-4-11 10:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    17

    回帖

    22

    积分

    助理工程师

    积分
    22
    发表于 2023-3-23 09:03:52 | 显示全部楼层 | 阅读模式
    悬赏15油猫币未解决

    本帖最后由 2233@ 于 2023-3-23 09:12 编辑

    起因是我用window.open打开了十一个窗口,每个窗口都有setIntaerval,间隔是50,运行了一段时间就,全部窗口崩了,我有清除setIntaerval这个定时器,为什么还会内存不足呢。
    代码如下function b() {
    var a = setInterval(function() {
    clearInterval(a);
    b();
    }, 50);
    }

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4188

    回帖

    4055

    积分

    管理员

    积分
    4055

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2023-3-23 09:42:42 | 显示全部楼层
    没实验,猜一个,50ms的间隔太短了,可能有的时候setInterval调用了多次,这样就会覆盖之前的记录(a),导致泄漏

    哥哥试试 setTimeout ?
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-4-11 10:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    17

    回帖

    22

    积分

    助理工程师

    积分
    22
    发表于 2023-3-23 10:21:01 | 显示全部楼层
    王一之 发表于 2023-3-23 09:42
    没实验,猜一个,50ms的间隔太短了,可能有的时候setInterval调用了多次,这样就会覆盖之前的记录(a),导 ...


    一之哥哥换成setTimeout也一样,这次开了15个
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-4-11 10:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    17

    回帖

    22

    积分

    助理工程师

    积分
    22
    发表于 2023-3-23 10:23:31 | 显示全部楼层
    我认为setTimeout和setInterval在那个嵌套函数里都是重复没有区别,我觉得是没有清除到位
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-3-23 10:58:18 | 显示全部楼层
    方便来个可复现的demo做测试吗...
    从理想情况下来说
    内存占用达到一定标准就会GC掉的...
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-4-11 10:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    17

    回帖

    22

    积分

    助理工程师

    积分
    22
    发表于 2023-3-23 12:49:28 | 显示全部楼层
    李恒道 发表于 2023-3-23 10:58
    方便来个可复现的demo做测试吗...
    从理想情况下来说
    内存占用达到一定标准就会GC掉的... ...

    那个给不了链接会有我的信息,我试了上次问的类似的异想少女,没有崩过,那应该不是定时器问题
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-4-11 10:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    17

    回帖

    22

    积分

    助理工程师

    积分
    22
    发表于 2023-3-23 12:53:03 | 显示全部楼层
    李恒道 发表于 2023-3-23 10:58
    方便来个可复现的demo做测试吗...
    从理想情况下来说
    内存占用达到一定标准就会GC掉的... ...

    哥哥,你知道canvas的声音怎么关闭吗或者关闭整个标签页的声音
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-3-23 14:48:50 | 显示全部楼层
    2233@ 发表于 2023-3-23 12:53
    哥哥,你知道canvas的声音怎么关闭吗或者关闭整个标签页的声音

    这个我还是推荐用浏览器的一键静音
    如果关闭canvas的声音的话
    可以看看他用的api是什么
    查一下对应的api文档
    一般来说感觉可能用了webaudio或者audio标枪
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2023-3-23 22:29:15 | 显示全部楼层
    你这是递归,本来就很容易爆内存,setInterval本身就是循环执行的,为什么要清除定时器再重新启用一个呢?多余的函数调用确实会增加内存消耗。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-4-11 10:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    17

    回帖

    22

    积分

    助理工程师

    积分
    22
    发表于 2023-3-25 19:38:28 | 显示全部楼层
    cxxjackie 发表于 2023-3-23 22:29
    你这是递归,本来就很容易爆内存,setInterval本身就是循环执行的,为什么要清除定时器再重新启用一个呢? ...

    之前不是递归嵌套的,就只有setInterval也会造成浏览器内存不足
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表