Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Освобождение памяти или как удалить this? (https://javascript.ru/forum/misc/23983-osvobozhdenie-pamyati-ili-kak-udalit.html)

trikadin 14.12.2011 03:30

Цитата:

Сообщение от Greck
Думаю, 99% утечек будут общие для всех браузеров.

IE смеётся над тобой.

zebra 14.12.2011 03:42

А есть где то мануал как искать утечки в хроме/фф? :blink:

devote 14.12.2011 04:34

Внимание, тест сожрет много памяти...
alert( "перед запуском посмотри запомним занимаемое количество памяти браузером" );

var a = [];
for( var i = 0; i < 20000; i++ ) {
    a[ i ] = [];
    for( var j = 0; j < 1000; j++ ) {
        a[ i ][ j ] = "blah";
    }
}

alert( "теперь смотри сколько заняло" );
a = null;
alert( "а теперь должно освободиться место в памяти" );
alert( "пробуем другой пример" );

var b = [];
for( var i = 0; i < 20000; i++ ) {
    b[ i ] = [];
    for( var j = 0; j < 1000; j++ ) {
        b[ i ][ j ] = "blah";
    }
}

alert( "запомнил?" );
delete window.b;
alert( "а теперь должно освободиться место в памяти" );
Вывод, сборщик не всегда срабатывает после уничтожения объектов... то есть память может быть не освобождена перед использованием нового объекта. а сборщик мусора сделает свое дело тогда когда захочет.. Тоесть что null что delete не всегда эффективно... все зависит от интервала сборки мусора сборщиком. Тестил на Opera 11.60 как будет в других не смотрел.

zebra 14.12.2011 05:22

А обязательно очищать массив? Ведь браузер сам же очищает и без delete/null

trikadin 14.12.2011 08:25

Цитата:

Сообщение от zebra
А есть где то мануал как искать утечки в хроме/фф?

bugzilla.org

Цитата:

Сообщение от zebra
А обязательно очищать массив? Ведь браузер сам же очищает и без delete/null

Необязательно. Даже не нужно.

Nekromancer 14.12.2011 10:34

devote,
переменную удалить нельзя, вы о чём вообще? У переменных configurable установлено в false, если конечно они не созданы через eval.

devote 14.12.2011 11:29

Цитата:

Сообщение от Nekromancer
переменную удалить нельзя, вы о чём вообще?

Да я вкурсе, забыл window дописать


Часовой пояс GMT +3, время: 01:25.