Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有任何web浏览器对删除的dom元素进行垃圾收集?(与Javascript对象相反)_Javascript_Dom_Memory_Browser_Html Rendering - Fatal编程技术网

是否有任何web浏览器对删除的dom元素进行垃圾收集?(与Javascript对象相反)

是否有任何web浏览器对删除的dom元素进行垃圾收集?(与Javascript对象相反),javascript,dom,memory,browser,html-rendering,Javascript,Dom,Memory,Browser,Html Rendering,如果一个web应用程序从未刷新过页面,而是完全从第一个页面加上Javascript请求构建,从而根据需要创建和销毁元素,那么有任何浏览器会重用过时的dom元素所使用的内存吗 这在任何浏览器中都有计划吗 我认为成熟的extJS应用程序对这种内存泄漏非常敏感 是否有任何真正有效的重用策略来缓解此问题 这里我指的不是Javascript对象垃圾收集,只是删除了DOM元素,但我不确定这最终是否本质上是一样的。简短的回答是,这取决于您的Javascript引擎 Chrome的V8就是这样做的看起来Chro

如果一个web应用程序从未刷新过页面,而是完全从第一个页面加上Javascript请求构建,从而根据需要创建和销毁元素,那么有任何浏览器会重用过时的dom元素所使用的内存吗

这在任何浏览器中都有计划吗

我认为成熟的extJS应用程序对这种内存泄漏非常敏感

是否有任何真正有效的重用策略来缓解此问题


这里我指的不是Javascript对象垃圾收集,只是删除了DOM元素,但我不确定这最终是否本质上是一样的。

简短的回答是,这取决于您的Javascript引擎


Chrome的V8就是这样做的

看起来Chrome是这样做的:

内存使用:

  • 起点:45K
  • 添加后:60K
  • 删除后:49K

  • 我原以为DOM垃圾收集与Javascript对象垃圾收集不同,我知道V8在Javascript原型设计方面有一些有趣的方法。这些优化是否也适用于实际的DOM元素?本文只是关于JS内存的。它甚至没有提到DOM。Chrome将DOM元素存储为本机对象,并为每个元素创建JS包装器对象,JS包装器对象与其他JS对象类似,只是它们由DOM子树分组保存。我搜索了,但找不到他们是如何对实际的底层本机DOM对象进行内存跟踪的。Firefox和IE都使用引用计数(或者至少在2010年前后使用过,我不确定从那以后是否发生了变化)。这是一个很好的说明工具,我们能解释4K从何而来吗?@barrymac:我不能确切地告诉你,但我猜,悬停按钮(即新图形)和处理点击也需要一些内存。当你甚至移动鼠标时,幕后发生的事情可能也会用到内存,比如JSFIDLE上文本区域的褪色标签。我知道这有点迂腐,但我相信有人知道,或者可能有一个更简单、更可控的测试来消除这些歧义。一个相关的问题有一些好的答案:更多信息,请参阅说明: