On 8/29/07, Rodrigo Pereira Fraga <[EMAIL PROTECTED]> wrote: > > Bacana Fabio.. > > Me corrija se eu estiver errado > Vc disse que o método "removeAllChildren" não remove da memória.. > > mas se eu dou um "removeAllChildren" em uma tela, e em seguida tento > acessar um atributo do mesmo, > recebo a mensagem de "null object reference..." logo não posso > concluir que tecnicamente foi destruído da memória?
Bem, talvez eu tenha me expressado mal, ou resumido demais. Talvez o mais correto fosse eu escrever "não removeu _completamente_ da memória". Ao remover você removeu o objeto simplesmente do display list. Display list é uma estrutura em que todos os objetos mostrados (e que herdam a classe DisplayObject). Assim, ao tentar se referenciar a ele, ele não existe mais lá no display list. Mas ainda há vestigios de seu código na memória. (Quando você insere um botão por exemplo, uma vez que a classe do botão faz referência a uma série de outras coisas, essas outras coisas todas vão para a memória também. ) Outra coisa *muito importante* a saber é que o Garbage Collector não é executado assim que você remove algo da memória. O GC é executado quando o Flash Player determina (exceto pelo hack já comentado), e uma das variáveis mais importantes que determina quando o GC será executado é a quantidade de memória disponível. Já peguei aplicativos que em máquinas com 2Gb de memória chegavam a ocupar 200 Mb e o cidadão bravou: "Hei, a máquina dos usuários não vai aguentar!". Peguei o mesmo aplicativo e rodei em uma máquina com bem menos memória e o aplicativo consumia bem menos memória: O Flash Player via a necessidade de executar e se limpar mais vezes. Isto é, ele preferia gastar um pouco mais de processamento ao efetuar o GC várias vezes (sim, fazer o GC é CPU intensive) para liberar memória, que era um recurso mais escasso. -- Fabio Terracini --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para [email protected] Para sair da lista, envie um email em branco para [EMAIL PROTECTED] Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---
