четверг, 29 марта 2012 г.

Утечки памяти в js

Тестирование различных браузеров:
ie8,
opera,
chrome,
firefox.

Инициалицируем в цикле массив:

var count = 10000;

function leak(){
    var arr = [],
        max = 1000000;

    // заполняем массив
    for( var i=0; i<max; ++i){
        arr[i] = i;
    }

    count--;

    if(count > 0)
    {
        // запускаем через равные промежутки времени
        setTimeout(arguments.callee, 100);
    }
}

leak();


Internet explorer 8 при запуске этого кода несколько раз спрашивает, остановить ли исполнение javascript на странице, отвечаю "нет".


Через некоторое, совсем небольшое время эксплорер выдает ошибку: Недостаточно памяти.




В остальных браузерах нет такого резкого скачка в потреблении памяти и держится примерно на одном уровне:
firefox, opera ~ 80 МБ.
chrome ~ 50 МБ.

Комментариев нет:

Отправить комментарий