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
-~----------~----~----~----~------~----~------~--~---

Responder a