我有一个简单的html表,由一些websocket处理程序定期更新:
<table class="schedule">
<tr>
<th>Header 1</th>
<th>Header 2</th>
<th>Header 3</th>
...
</tr>
<tr>
<td class="order"><div>Text 1</div></td>
<td class="order">Text 2</td>
<td class="order">Text 3</td>
...
</tr>
</table>
(总共14列和大约10-20行,每行中的第一个单元格有一个没有类的div元素;行也没有css类。)
每次更新时都会从表中删除所有行/单元格,并且只有在动态添加新的“order”单元格之后; dom中没有重复的表(已选中);单元格必须是可拖动的,所以如果我在更新表的函数末尾添加以下行,页面在堆中泄漏大约1 mb,则向DOM添加大约200个新侦听器和大约200个新节点。 GC从不收集这些对象:
var dnd = $("table.schedule td.order").draggable();
如果评论排除一切都很好,GC会收集所有内容。我怀疑问题出在我的选择器中,但我现在花了几个小时使用Chrome的工具,但仍然看不出问题所在。任何帮助都非常感谢。