Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Память кушает, нехороший... (http://www.flasher.ru/forum/showthread.php?t=25924)

Lёlik 17.01.2002 20:34

Память кушает, нехороший...
 
Есть флэшка. Если она работат продолжительное время, то постепенно забирает под себя все больше и больше памяти.

Есть постоянно загружаемые 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;
}


Vaicartana 18.01.2002 12:26

еще бы...
 
а удалять подмассив кто будет, дядя?

Ар - ссылка на массив, не более. Перебирая элементы массива и делая их самих массивами ты тем самым выделяешь память под них, а удалять их забываешь.

И еще по секрету: после "return Ar;" программа обычно перестает выполнятся в текущей функции...

Lёlik 18.01.2002 19:16

У-у-у, какие мы хитрые.
 
Delete-ы в этом коде я мог бы и не проставлять - они не работают, от тестов остались.

Удалял я и массив и подмассивы - те же грабли. Пробовал пользоваться одним и тем же массивом - грабли еще хуже.

Работают ли вelete-ы, если их выносить за функцию? Надо ли здесь удалять передаваемые функции объекты?


Часовой пояс GMT +4, время: 04:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.