The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Firefox и освобождение памяти. JS"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [ Отслеживать ]

"Firefox и освобождение памяти. JS"  +/
Сообщение от wDevil (??) on 06-Авг-09, 06:05 
Не совсем понимаю как выделяется и освобождается память в ФФ. Пример:
var images = new Array();
for(i=0; i < 2000; i++) {
  var img = document.createElement('img');
  img.src='http://localhost/drawer/'+i;
  images.push(img);
}
drawer - выдает пнгшки пустые.

ФФ при этом слопал до 300 метров памяти. Теперь если удалять массив картинок память уже не высвобождается. Была мысль,что проблема в том, что картинки я не прикрепляю к дереву. Сделал еще один тест, где прикреплял картинки в дерево документа и потом удалял их все в цикле. Результат то же. Что я не учитываю?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Firefox и освобождение памяти. JS"  +/
Сообщение от Thirteensmay on 06-Авг-09, 10:58 
Сразу она может не высвобождаться, сборщик мусора может работать не сразу по факту, а переодически, с целью экономии ресурсов, если после удаления подождать несколько минут ?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Firefox и освобождение памяти. JS"  +/
Сообщение от wDevil (??) on 06-Авг-09, 13:56 
минут 5 ждал - ничего
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Firefox и освобождение памяти. JS"  +/
Сообщение от Thirteensmay on 06-Авг-09, 14:20 
так а удаляете как, из DOM типа parentNode.removeChild(), или только ссылки из массива ?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Firefox и освобождение памяти. JS"  +/
Сообщение от wDevil (??) on 06-Авг-09, 17:15 
>так а удаляете как, из DOM типа parentNode.removeChild(), или только ссылки из
>массива ?

в примере выше я не аппендю объекты в документ, потому и удаляю просто ссылки из массива. Второй тест, который писал, там аппендил и удалял, соответственно, removeChild'ом

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Firefox и освобождение памяти. JS"  +/
Сообщение от Thirteensmay on 06-Авг-09, 18:12 
вы бы примерчик полный показали, с удалением, было бы лучше, че там лишних пару строк. Вот у меня к примеру если так то все нормально освобождается:

<script>
function doCreate()
{
  images = new Array();
  for(i = 0; i < 300000; i++)
  {
    var img = document.createElement('img');
    img.src='http://localhost/1.bmp';
    images.push(img);
  }
}

function doDel()
{
  delete images;
}
</script>
<button onclick='doCreate()'>doCreate()</button>
<button onclick='doDel()'>doDel()</button>

захавывает 250 метров и жмет пока не doDel(), а после doDel() в течение полутора минут освобождает.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Firefox и освобождение памяти. JS"  +/
Сообщение от wDevil (??) on 06-Авг-09, 18:22 
Хм. А можно узнать какая ОС? Завтра на работе попробую еще разок, может я что-то перемутил. Удлание делал:
1. delete images
дальше польши все варианты в порядке бреда:
2. images = null
3. for(var i=0; i <images.length;i++) {
delete(images[i]);
//images[i] = null;
}
delete images;

Тесты я проводил на 3.0.12 в Ubuntu 9.10.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Firefox и освобождение памяти. JS"  +/
Сообщение от Thirteensmay on 06-Авг-09, 19:15 
у меня 3.5.2 под XP, и images = null, и = new Array(), и пр. сейчас специально попробовал ;) все нормально высвобождается.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру