Coleta de Lixo

O coletor de lixo do .NET Framework gerencia a alocação e liberação de memória para o seu aplicativo.Each time you use the newoperator to create an object, the runtime allocates memory for the object from the managed heap.Enquanto espaço de endereço estiver disponível no heap gerenciado, o tempo de execução continua a alocar espaço para novos objetos.No entanto, a memória não é infinita.Eventualmente, o coletor de lixo deve executar um coleção para liberar memória.Mecanismo de otimização do coletor de lixo determina o melhor tempo para realizar um coleção, com base em alocações sendo feitas.Quando o coletor de lixo executa uma coleção, ele verifica para objetos no heap gerenciado que não estão sendo usados pelo aplicativo e executa as operações necessárias para recuperar sua memória.

Esta seção descreve como o coletor de lixo gerenciado automaticamente a alocação e o versão de memória para os objetos gerenciado no seu aplicativo.Além disso, ele descreve o padrão de design recomendado a ser usado para limpar adequadamente os recursos não gerenciados que seu aplicativo cria.

Observação:

No .NET estrutura versão 1.0, o common linguagem tempo de execução (CLR) tem um Gerenciador de memória separado de heap de objeto grande.Em algumas circunstâncias este gerenciador de memória não retorna memória não utilizada para o sistema operacional, e em alguns casos não faz a memória disponível para o lixo coleção.Isso resultados em Falha ao alocar memória devido à fragmentação de espaço de endereço virtual .Nas versões do .NET estrutura 1.1 e 2.0, heap de objeto grande é composto por áreas contíguas da memória chamados segmentos de pilha, alinhados corretamente para minimizar a fragmentação da memória virtual.Durante a coleta de lixo, o espaço recuperado de objetos grandes é consolidado e colocado em uma lista disponível.Segmentos de pilha que contém somente itens de lista disponível são liberados e a memória é retornada para o sistema operacional.Essas alterações no heap de objeto grande eliminaram efetivamente as falhas de alocação de memória causadas por essa forma de fragmentação de espaço de endereço virtual.

Observação importante:

Ativado servidores com mais de 2 GB de memória, talvez seja necessário especificar comutador/3 GB no arquivo boot.ini para evitar problemas de insuficiência de memória aparentes enquanto memória ainda está disponível para o sistema.

Nesta seção

Referência

  • System.GC
    Fornece métodos para interagir com o coletor de lixo do sistema.

  • Object.Finalize
    Permite que um objeto tentar liberar recursos e executar outras operações de limpeza antes que o coletor de lixo recupera o objeto.

  • System.IDisposable
    Fornece a funcionalidade de uma classe de recurso.

Seções relacionadas