Утечка памяти IE6 на обновлении?

Я перезагружаю страницу каждые несколько секунд для получения обновления от сервера, эта страница может быть открыта, и это может произойти навсегда - я предполагаю, espcially так как этот браузер находится на удаленном сервере, который не выключен.

Я делаю это:

setTimeout(function () {
        location.href = location.href; // forces a reload from the server
    }, 1000*10*0.5); 

Я заметил, что использование памяти IE6 продолжает увеличиваться и увеличиваться. Страница ничего не делает кроме обновления и отображает HTML.

Почему это происходит? Как может я по прибывшему эта проблема? Я не хочу разрушать IE6.

В 435,000K и это были приблизительно 30 минут.

Спасибо все

Обновление

Извините все - у меня действительно есть другая функция, которая работает каждый раз, когда страница загружается:

function recreateTicks(tasks){

 if(tasks!=''){

  var myTicks = tasks.split(',');

  var length = myTicks.length;

  for(var i=0; i<length; i++){

   var element = myTicks[i];

   $('#'+element).attr('checked', true);

  }

 }

}

Что-то не так с вышеупомянутым? Циклическая ссылка??

Обновление 2

Вышеупомянутая функция вызвана как это:

<script type="text/javascript">
<!--PHP Generated-->
var tasks = 'ab_1, ab_2, ab_3';
</script>
<script type="text/javascript">
$(document).ready(function(){     
recreateTicks(tasks);
});
</script>
5
задан Keith 3 March 2010 в 10:31
поделиться

4 ответа

Хорошо, это немного спорно, но почему бы просто не позволить IE6 рухнуть?

В итоге вы можете потратить большую часть своего времени разработки на проблемы IE6 - быстро сокращающийся рынок в лучшем случае. Пока он мрачно держится в корпоративном пространстве, оставшиеся пользователи в любом случае ужасно заперты с большим количеством плохого программного обеспечения. У этих пользователей IE6 все чаще будет складываться впечатление, что их ПК настроен некачественно (а так оно и есть).

Почему бы просто не позволить этим пользователям IE6 потерпеть крах? Они просто увидят, что их ПК становится все медленнее и медленнее, а сообщение об ошибке (когда оно появится) будет сообщением IE, а не страничным.

В подходе к качеству, на 100% ориентированном на клиента, есть много ценного, и опасно позволять таким пользователям самим решать свои проблемы, но для вас важен баланс между затратами на разработку и вознаграждением.

Если только эти пользователи IE6 (чей браузер все равно постоянно падает) не заметят, что проблема в вашем приложении, и не смогут заблокировать его продажу, тогда какая вам польза от удвоения затрат на разработку?

Наконец, если вы действительно хотите, чтобы IE6 не протекал, не используйте jQuery. Напишите весь ваш Javascript с нуля и следите за масштабированием и различными ошибками IE6 DOM как ястреб. jQuery использует расширенные атрибуты (которые всегда утекают в IE6) и скрывает некоторые проблемы масштабирования, которые вам действительно нужно контролировать, если вы хотите, чтобы IE6 не утекал.

4
ответ дан 18 December 2019 в 14:45
поделиться

Вы уверены, что страница ничего не делает? У вас нет (например) нескольких обработчиков событий, которые вы прикрепили к элементам? IE известен утечкой памяти, если вы явно не разрываете соединение между элементом и его обработчиком во время события unload . (Это не универсально, обработчик должен иметь ссылку на что-то, но сделать это тривиально легко - например, с помощью замыкания.) Крокфорд написал некоторую информацию об утечках памяти IE, которые могут быть вам полезным.

7
ответ дан 18 December 2019 в 14:45
поделиться

IE6 ужасно работает с памятью. В IE7 были сделаны некоторые улучшения, и еще больше в IE8.

Как говорит TJ, причиной этого могут быть круговые ссылки (элемент страницы ссылается на объект javascript, который ссылается обратно на этот элемент).

Вы можете прочитать больше о том, как уменьшить утечки в IE, прочитав ЭТУ СТРАНИЦУ. Вам также следует ознакомиться с The JavaScript Memory Leak Detector (написан командой Global Products в Microsoft). Он поможет вам найти утечки, если таковые имеются.

2
ответ дан 18 December 2019 в 14:45
поделиться

Вы уверены, что у вас установлена ​​последняя исправленная версия IE6? Я столкнулся с той же проблемой в корпоративной локальной сети и в конце концов понял, что на настольных компьютерах не было исправлений, чтобы сохранить совместимость с устаревшим программным обеспечением. Обновление до последней версии IE6 устранило проблему.

В частности, я считаю, что это патч ...

http://support.microsoft.com/kb/929874/

0
ответ дан 18 December 2019 в 14:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: