账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    把new Date()添加进数组里面,内存没法回收是什么问题?
    • 2019-02-07 00:00
    • 11
    60
    0

    各位新年好啊,看几段代码消消食?

    setTimeout(test2, 3000)
    function test2 () {
      var leak = []
      for (var i = 0; i < 2000000; i++) {
        leak.push(new Date())
      } // 此时 IE 占用 267M,与 test1 中执行了 null 赋值之后一样
      leak = null // 执行了 null 赋值操作,也没有任何变化
    }
    
    setTimeout(test3, 3000)
    function test3 () {
      var leak = []
      for (var i = 0; i < 10000000; i++) { // 为了让效果更明显,增加循环次数
        leak.push('用不同字符串的话,会不会有什么不同呢?会不会是 new Date() 的锅?')
      } // 原本 IE 占用内存 40M 左右,执行 push 时最高达到了 124M,随后降到了 41.7M
    }
    
    setTimeout(test4, 3000)
    function test4 () {
      for (var i = 0; i < 10000000; i++) {
        var a = new Date()
      } // 内存在 40~50M 之内,还算正常,似乎不是 new Date() 的问题
    }
    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 柠北森屋 普通会员 1楼
      网站防火墙
      网站防火墙

      您的请求带有不合法参数,已被网站管理员设置拦截!

      可能原因:

      1. 您提交的内容包含危险的攻击请求

      如何解决:

      1. 检查提交内容;
      2. 如网站托管,请联系空间提供商;
      3. 普通网站访客,请联系网站管理员;
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部