保持对dom节点的引用:内存问题

时间:2014-11-04 14:17:18

标签: javascript html dom

我正在构建一个在线文本编辑器类型的应用程序(具有更多功能)。

应用程序需要在dom中更多dom节点查找(用于para更新等)并更新节点。用户可以在每个节点上执行大量操作,因此我认为永久保留对节点的引用而不是getElementById ......等。

我在想,随着dom节点数量的增加,我的脚本中的引用也会增加。

  1. 以这种方式对记忆产生什么影响?

  2. 更确切地说,保存在内存中的引用是简单的引用 或带来一些沉重的元数据?

  3. 感谢。

    如果问题不明确,请提问。

2 个答案:

答案 0 :(得分:2)

好的,为了使事情变得清晰和具体,这就是我所做的。我通过控制台在重叠的stackoverflow页面上添加了一个按钮。

我的btn = document.createElement('button');

然后在每次点击按钮时我添加了对document.body的引用,如下所示:

mybtn.onclick = function(){myar = []; for(var i = 0; i< 10000; i ++){myar [i] = document.body;}}

我执行了很多次点击,并注意到每10000次引用创建的内存增加大约0.5 MB。

然后我用一个空对象{}替换了document.body。

再次,内存增加约为每10000个引用0.5 MB。

因此我们可以安全地得出结论,对dom节点的引用仍然是简单的引用,除非过度创建,否则不会影响内存。

PS:我使用chrome内存时间线进行了内存分析。

答案 1 :(得分:1)

Javascript是分享号码,请参阅Wikipédia,因此它只是引用,没有元数据。

只要你没有存储疯狂数量的物品,我就不会认为记忆影响会太大。