js内存泄漏

现在正在做一个项目,一模态框弹出加载好多图片,当关闭模态框的时候有内存泄漏,有几个问题不太清楚

  1. 图片中的Detached HTMLImageElementHTMLImageElement区别?
    HTMLImageElement存放页面存在的DOM元素
    Detached HTMLImageElement 存放页面不存的元素,但是发生内存泄漏,没有释放的DOM元素缓存
    上面两点是我的猜测,不太确定,是否正确?
  2. 图片中retainer部分,是查看Detached HTMLImageElement中的详细信息,他是由于绑定事件而造成的内存泄漏,但是绑定事件的DOM元素和这个img元素不是父子关系,他们只是有共同的父辈元素,为什么会出现这种层层递进到了img元素上,造成img元素无法释放,而不是只造成绑定事件元素无法释放?并且还是多个img元素?

clipboard.png

clipboard.png

阅读 3.2k
1 个回答

再往上几层我看到了 jQuery 的 cache 。

你绑定了事件的元素也已经 detach 了,说明它已经在 DOM 树上,但是事件却还在 jQuery 的 cache 里,说明很可能没有正确的使用 jQuery 从 DOM 树去移除这些元素,从而 jQuery 的 cache 没有被正常的清理。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题