jQuery-selectable导致内存泄漏。我怎么能阻止这个?有什么我想念的吗?
我有一个复杂的Web应用程序,它使用jquery UI-selectable的多个实例。我一直在使用sIEve来跟踪内存泄漏,我注意到泄漏的数量等于ui可选实例的数量。
我写了一个简单的测试页面,使用可选择的最小化我想到的。在sIEve中,它导致1个内存泄漏(div#b)。
这是HTML:
<!DOCTYPE html>
<html>
<head><title>test leaks with selectable</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery-ui.js"></script>
<script type="text/javascript" src="testLeaks.js"></script>
</head>
<body>
<div id="b"></div>
</body>
</html>
这是testleaks.js:
function begin() {
$('#b').selectable();
}
function unloadCleanup() {
$('#b').selectable('destroy');
$('#b').remove();
}
$(window).unload(unloadCleanup);
$(document).ready(begin);
在我看到泄漏后,我只包括unloadCleanup
和.unload
处理程序。无论有没有它都没有区别。
这似乎证明只需激活jquery-selectable就会导致内存泄漏。
接下来我更改了testleaks.html以包含子div:
<div id="b">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
在sIEve中,我加载了页面并选择了一个子div。产生的泄漏数量为11 - 可选div本身为1,每个被选择者为1。
选择多个子div不会增加泄漏次数。如果选择了任何子div,则泄漏次数为11次,如果没有选择子级别则为1次。
使用 jQuery 1.6.4 和 jQuery-UI 1.8.16 与可选择,对话框,以及 datepicker ,以及亮度主题。
我有什么问题吗?
答案 0 :(得分:0)
原因是不 selectable
。显然datepicker
。
出于好奇,我使用相同的组件(selectable,dialog和datepicker)更新到jQuery 1.7.1和jQuery UI 1.8.18。内存泄漏仍然存在同样的问题。
我尝试了相同版本的没有 datepicker,只使用了可选择和对话框,内存泄漏消失了。