none
Liberação de Recursos da Memória

    Question

  • Olá,

    estou criando uma aplicação WindowsForms, e gostaria de saber se há alguma maneira de liberar os recursos de um formulário ao fechá-lo, ao invés de ter que esperar pelo GarbageCollector. Já tentei utilizar o método Dispose do form, mas este não diminui a quantidade de memória utilizada pelo meu programa. Há alguma coisa que eu possa fazer em relação a isso?
    Outra pergunta: Quando o GarbageCollector é invocado? Ele é invocado a cada período de tempo pré-definido?

    Desde já agradeço.
    Tuesday, December 05, 2006 11:04 AM

Answers

  • Francis,

    Tem como você invocar o GarbageCollector programaticamente, mas isso em geral não é necessário, há menos que você precise efetivamente de mais recursos de memória imediatamente - o que teria, por definição, acionado o GC automaticamente. Seria assim:

    GC.Collect();

    Não é necessário por alguns motivos: a) Memória alocada não é memória consumida. O fato do seu aplicativo estar alocando memória não significa que ele está usando, e memória alocada pode ser reclamada a qualquer momento pelo SO, quando for necessária. b) Respondendo sua outra pergunta, não há como determinar quando o GC vai entrar em ação. O gerenciamento de memória no .Net é automático, tão logo o mecanismo de GC "perceba" que há a necessidade de liberar recursos, ele reclama por eles. Em geral, tudo o que você tem a fazer é confiar no GC.

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx

    Tuesday, December 05, 2006 11:15 AM
    Moderator

All replies

  • Francis,

    Tem como você invocar o GarbageCollector programaticamente, mas isso em geral não é necessário, há menos que você precise efetivamente de mais recursos de memória imediatamente - o que teria, por definição, acionado o GC automaticamente. Seria assim:

    GC.Collect();

    Não é necessário por alguns motivos: a) Memória alocada não é memória consumida. O fato do seu aplicativo estar alocando memória não significa que ele está usando, e memória alocada pode ser reclamada a qualquer momento pelo SO, quando for necessária. b) Respondendo sua outra pergunta, não há como determinar quando o GC vai entrar em ação. O gerenciamento de memória no .Net é automático, tão logo o mecanismo de GC "perceba" que há a necessidade de liberar recursos, ele reclama por eles. Em geral, tudo o que você tem a fazer é confiar no GC.

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx

    Tuesday, December 05, 2006 11:15 AM
    Moderator
  • Francisco, muito obrigado pela resposta.
    Abraço.
    Tuesday, December 05, 2006 3:24 PM