我在我的一个项目中使用淘汰赛js。我是淘汰赛的新手,我正在努力修复项目中的内存泄漏。我的页面在初始加载时占用了大约100MB RAM,并且在屏幕上执行的每个操作上都会持续增加17MB。
我觉得发生内存泄漏的主要情况是DOM渲染案例。在页面中,通过循环遍历可观察数组,一些元素被添加到DOM。每次新的数据集出现时,我只是将数组清空并用新数据重新加载,这将导致DOM元素被删除并再次添加新数据。
任何人都可以告诉这些旧DOM元素在删除之前是如何处理的,这样它们就不会占用RAM内存。
淘汰foreach绑定:
<tbody data-bind="foreach: Supplies">
<tr>
<td> <span data-bind="text:supplyName"></span>
</td>
<td>
<select data-bind="options:supplyDetails,optionsText:'itemcapacity',value:selectedSupply"></select>
</td>
</tr>
</tbody>
你可以在这里找到JS小提琴
在上面的小提琴中。在初始页面加载时,我填充了“类别”下拉列表。当用户更改“类别”时,将填充“模型”下拉列表。在更改我正在获取耗材和加载可观察数组。因此,每次用户更改“模型”下拉列表时,都会创建耗材DOM。如果是这样,DOM会占用更多内存吗?我们如何处理旧的DOM元素以释放内存?