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
Planos de fundo de desenvolvedor no gerenciamento de memória
Descreve os desenvolvedores de ajustes, que tradicionalmente tem usado o Visual Basic, C++ e COM, deve fazer quando mover para código gerenciado.Finalizar métodos and Destructors
Descreve como Finalize métodos e destruidores permitem que um objeto para executar algumas operações de limpeza necessária antes que o coletor de lixo automaticamente recupera memória do objeto.Referências fracas
Descreve os recursos que permitem que o coletor de lixo para coletar um objeto enquanto ainda permite que o aplicativo para acessar esse objeto.Coleções induzidas
Descreve como recuperar objetos imediatamente ou a próxima melhor time.Modos de latência
Descreve os modos que determinam o intrusiveness de lixo coleção.Otimização para hospedagem na Web compartilhada
Descreve como otimizar lixo coleção nos servidores compartilhados hospedando vários sites pequenos.Lixo coleção notificações
Descreve como determinar quando uma coleta de lixo completa está se aproximando e quando tiver concluído.Limpeza de recursos não gerenciados
Descreve o padrão de design recomendado para limpeza de recursos não gerenciados.
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
- Exemplo de tecnologia de coleta de Lixo
Apresenta a funcionalidade do coletor de lixo do .NET estrutura.