我正在构建一个在线文本编辑器类型的应用程序(具有更多功能)。
应用程序需要在dom中更多dom节点查找(用于para更新等)并更新节点。用户可以在每个节点上执行大量操作,因此我认为永久保留对节点的引用而不是getElementById ......等。
我在想,随着dom节点数量的增加,我的脚本中的引用也会增加。
以这种方式对记忆产生什么影响?
更确切地说,保存在内存中的引用是简单的引用 或带来一些沉重的元数据?
感谢。
如果问题不明确,请提问。
答案 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,因此它只是引用,没有元数据。
只要你没有存储疯狂数量的物品,我就不会认为记忆影响会太大。