V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
SomeBottle
V2EX  ›  JavaScript

js 移除节点后还残余一些额外节点

  •  
  •   SomeBottle · 2020-04-13 15:30:58 +08:00 · 2022 次点击
    这是一个创建于 1703 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近研究页面内存占用的时候发现除开 js 占用、GPU 和各种缓存,总内存占用还多出了好一些:

    于是怀疑起 dom 节点,调试过程中通过 performance monitor 发现尽管已经倒序删除了 html 内的节点,还有上百个没法 gc 回收掉的节点。在 pjax 博客页面里也是这样,而且经常能累积到上千个..

    想询问一下这些节点对内存真的有影响吗,如果有的话能有办法彻底删除吗

    调试用: https://pastebin.com/v8iTHXES
    使用的浏览器是 Edge Chromium

    3 条回复    2020-04-13 18:31:33 +08:00
    SunriseFox
        1
    SunriseFox  
       2020-04-13 15:49:40 +08:00   ❤️ 1
    我试了下似乎和 DevTools 有关,开 about:blank 什么也不做也会有很多 Dom Nodes,在 elements 面板鼠标滑过 HTML Tag 这个 Nodes 就会疯狂上升,在 performance 或 memory 面板选择 collect garbage 之后 Nodes 数值就会下降。猜想这个 DOM Nodes 里面包含还没来得及垃圾回收的节点?
    SomeBottle
        2
    SomeBottle  
    OP
       2020-04-13 16:19:27 +08:00
    @SunriseFox #1 试了一下确实如此,这样做了之后 gc 一下 nodes 数量会少很多.在调试用页面测试的时候我多执行了几次 removeChild,发现 Nodes 数量一下子变成两位数了...但是页面内存占用还是有 30000K,看来是没有很大关联了...
    xcstream
        3
    xcstream  
       2020-04-13 18:31:33 +08:00
    会占内存 但对使用没影响
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   862 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:16 · PVG 05:16 · LAX 13:16 · JFK 16:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.