未使用的DOM元素会发生什么?

6

假设我创建了一个具有自己画布的类:

this.canvas = document.createElement("canvas");

我使用那个画布,绘制一些东西等等,但从未将画布添加到DOM树中。 完成后,我将不再使用整个类。

所以当我删除使用画布的类时,画布是否仍然占用内存?我需要以某种方式删除它吗?

或者更一般的问题是:未使用的元素会怎样,它们不再在DOM树中或从未在其中(网站上不可见)?它们是否会被垃圾回收和/或您能加速这一过程以提高性能吗?


我认为浏览器不会对它们进行垃圾回收,因为它永远无法确定您何时可能将其注入到DOM中。 - Andreas Wong
4
如果他们表现良好,他们会进入DOM天堂,如果表现不佳,他们就会进入DOM地狱。 - Asherah
1个回答

2

正如你正确地指出的那样,这不是关于DOM树的问题,而更多地涉及到对象引用和垃圾收集器。

当你通过将基本对象设置为null来删除/移除一个类时,所有现代收集器都会为你处理。通过甚至不将节点插入DOM中,你也不必担心任何隐藏的引用。我见过一些人明确将<canvas>引用设置为null,但我想这纯粹是IE8的偏执症。


好的。谢谢你的回答。我猜到了,但确定起来还是更好 :) - TheSHEEEP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接