把new Date()添加进数组里面,内存没法回收是什么问题?

发布于 2022-09-11 17:34:56 字数 658 浏览 24 评论 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() 的问题
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

很酷不放纵 2022-09-18 17:34:56

还是有作用的

不如等个 40±10s

再对比注释 leak = null 后的代码
观察等待时间的变化(或许真的有变化,我不知道,你可以挂一个下午看看内存有没有减少(被压缩?))

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文