![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2002
Сообщений: 4
|
Есть флэшка. Если она работат продолжительное время, то постепенно забирает под себя все больше и больше памяти.
Есть постоянно загружаемые XML-пакеты, которые загоняются в массив и, после преобразований, опять в XML Так вот на этом этапе медленно, но верно флэшка забирает память. Есть delete, но работает он мягко говоря, как-то неудачно. Как еще следить за памятью? Или как корректно работает delete? function XMLtoArray(a)
{
node = a.firstChild.firstChild;
Ar = new Array();
i = 0;
while (node != null)
{
node2 = node.firstChild;
Ar[i] = new Array()
j = 0;
while (node2 != null)
{
Ar[i][j++] = node2.firstChild.nodeValue;
node2 = node2.nextSibling;
}
node = node.nextSibling;
i++;
}
return Ar;
delete Ar;
}
function ArrayToXML(Ar)
{
temp = '<?xml version="1.0" encoding="UTF-8"?><root>';
for (j = 0; j<Ar.length; j++)
{
temp = temp + '<r>';
for (k = 0; k<Ar[j].length; k++)
{
c.appendChild('<r></r>')
temp = temp + '<c>' + Ar[j][k] + '</c>';
}
temp = temp + '</r>';
}
temp = temp + '</root>';
c = new XML(temp);
lable1 = lable1 + c.status;
return c;
delete c;
}
|
|
|||||
|
а удалять подмассив кто будет, дядя?
Ар - ссылка на массив, не более. Перебирая элементы массива и делая их самих массивами ты тем самым выделяешь память под них, а удалять их забываешь. И еще по секрету: после "return Ar;" программа обычно перестает выполнятся в текущей функции...
__________________
Трудно быть одному и ждать рассвет, как спасенье.... |
|
|||||
|
Регистрация: Jan 2002
Сообщений: 4
|
Delete-ы в этом коде я мог бы и не проставлять - они не работают, от тестов остались.
Удалял я и массив и подмассивы - те же грабли. Пробовал пользоваться одним и тем же массивом - грабли еще хуже. Работают ли вelete-ы, если их выносить за функцию? Надо ли здесь удалять передаваемые функции объекты? |
![]() |
Часовой пояс GMT +4, время: 07:19. |
|
|
« Предыдущая тема | Следующая тема » |
|
|