2009-02-05 2 views
0

У меня есть простая страница, состоящая из таблицы с тремя jQuery UI progressbars и вызовом ajax.Утечки памяти в jQuery UI

Ajax вызывает пустой файл php и при успешном уничтожении и воссоздании моих progressbars.

Это кажется простым, но его запуск вызвал утечку памяти как в IE7, так и в Chrome (хотя Chrome обработал его гораздо более изящно).

Вот мой код:

<script type="text/javascript" src="jQuery/js/jquery-1.3.1.js"></script> 
<script type="text/javascript" src="jQuery/js/plugins/jquery-ui-1.6rc4.min.js"></script> 
<link rel="stylesheet" type="text/css" href="jQuery/css/ui.all.css" /> 

<script type="text/javascript"> 
$(function(){ 
    timed();  
}); 

function timed() 
{ 
    $.ajax({ 
     url: "index.php", 
     success: function(msg){ 
      $(".progressbar").progressbar("destroy").progressbar(); 
     } 
    }); 

    setTimeout("timed()",1000); 
} 

<table> 
<tbody> 
    <tr> 
     <td> 
      <div class="progressbar"></div> 
     </td> 
     <td> 
      <div class="progressbar"></div> 
     </td> 
     <td> 
      <div class="progressbar"></div> 
     </td> 
    </tr> 
</tbody> 

Любые идеи для того, что я здесь отсутствует?

Я попытался добавить $("*").unbind(); перед строкой $(".progressbar") в моей функции Успеха.

ответ

0

Почему вы уничтожаете его, воссоздавая его? Было бы проще просто сбросить значения прогресса до нуля и оставить его в покое, пока вам это не понадобится позже. Вы можете даже .hide(), если вы специально не хотите, чтобы это было видно.

+0

Ну, в моем приложении я обновляю таблицу данных каждые 5 секунд или около того с помощью Ajax. Таблица хранится в файле шаблона и с помощью jTemplates его заменяется после каждого обновления. Если вы не знаете лучше, уничтожение было всего лишь предосторожностью, прежде чем воссоздать бары. – 2009-02-05 21:25:21

0

Я думаю, что я сделаю это просто создать индикатор выполнения при запуске приложения, клонировать его и добавить его в мой шаблон после завершения его обработки. Это существенно замедляет использование памяти при сканировании (около 4 тыс. Каждые 4-5 обновлений), а не в текущем (от 100 до 300 к за обновление).

Смежные вопросы