jqueryUI可选择导致内存泄漏

时间:2012-02-22 04:32:28

标签: jquery jquery-ui memory-leaks

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 ,以及亮度主题。

我有什么问题吗?

1 个答案:

答案 0 :(得分:0)

原因是 selectable。显然datepicker

出于好奇,我使用相同的组件(selectable,dialog和datepicker)更新到jQuery 1.7.1和jQuery UI 1.8.18。内存泄漏仍然存在同样的问题。

我尝试了相同版本的没有 datepicker,只使用了可选择和对话框,内存泄漏消失了。