Выбор jqueryUI вызывает утечки памяти - PullRequest
0 голосов
/ 22 февраля 2012

jQuery-selectable вызывает утечки памяти.Как я могу предотвратить это?Есть что-то, чего мне не хватает?

У меня есть сложное веб-приложение, которое использует несколько экземпляров jquery UI-selectable.Я использовал sIEve для отслеживания утечек памяти, и я заметил, что количество утечек равно числу экземпляров, выбираемых пользовательским интерфейсом.

Я написал простую тестовую страницу, в которой выбираемый выбирается как можно меньше.В 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-select вызывает утечку памяти.

Затем я изменил testleaks.html, добавив в него sub-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 я загрузил страницу и выбрал один из подразделов.Число полученных утечек составило 11 - по одному для самого выбираемого элемента div и по одному для каждого выбранного.

Выбор более одного дочернего элемента не увеличил количество утечек.Число утечек составило 11, если были выбраны какие-либо дочерние элементы, и 1, если никакие дочерние элементы не были выбраны.

Использование jQuery 1.6.4 и jQuery-UI 1.8.16 с возможностью выбора , диалоговое окно и указатель даты и темой легкости.

Есть ли что-то, что я делаю неправильно

1 Ответ

0 голосов
/ 25 февраля 2012

Причина была , а не selectable.Это было, очевидно, datepicker.

Из любопытства я обновил jQuery 1.7.1 и jQuery UI 1.8.18 с теми же компонентами (выбираемый, диалоговое окно и средство выбора даты).У него все еще была та же проблема с утечками памяти.

Я попробовал ту же версию без DatePicker, используя только selectable и диалоговое окно, и утечки памяти исчезли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...