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

2020-04-13 15:30:58 +08:00
 SomeBottle

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

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

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

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

1998 次点击
所在节点    JavaScript
3 条回复
SunriseFox
2020-04-13 15:49:40 +08:00
我试了下似乎和 DevTools 有关,开 about:blank 什么也不做也会有很多 Dom Nodes,在 elements 面板鼠标滑过 HTML Tag 这个 Nodes 就会疯狂上升,在 performance 或 memory 面板选择 collect garbage 之后 Nodes 数值就会下降。猜想这个 DOM Nodes 里面包含还没来得及垃圾回收的节点?
SomeBottle
2020-04-13 16:19:27 +08:00
@SunriseFox #1 试了一下确实如此,这样做了之后 gc 一下 nodes 数量会少很多.在调试用页面测试的时候我多执行了几次 removeChild,发现 Nodes 数量一下子变成两位数了...但是页面内存占用还是有 30000K,看来是没有很大关联了...
xcstream
2020-04-13 18:31:33 +08:00
会占内存 但对使用没影响

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/661985

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX