Compartilhar via


Planos de fundo de desenvolvedor no gerenciamento de memória

Sua experiência com o gerenciamento de memória irão variar dependendo do seu plano de fundo de desenvolvimento.Em certas situações, será necessário adaptar seus práticas programação para o gerenciamento automático de memória fornecido pelo common linguagem tempo de execução.

COM desenvolvedores

COM que sistema autônomo desenvolvedores estão acostumados a implementação de contagem sistema autônomo uma técnica de gerenciamento de memória manual de referência.Sempre que um objeto é referenciado, um contador é incrementado.Quando uma referência a um objeto fica fora do escopo, o contador é decrementado.Quando a contagem de referência do objeto chegar a zero, o objeto é finalizado e sua memória seja liberada.

A esquema de contagem de referência é fonte de vários bugs.Se as regras de contagem de referência não forem seguidas com precisão, objetos podem ser liberados prematuramente ou objetos não referenciados podem acumular na memória.Referências circulares também são uma fonte comum de bugs.Uma referência circular ocorre quando um objeto filho tem uma referência a um objeto pai e o objeto pai tem uma referência ao objeto filho.Esse cenário impede que qualquer objeto seja liberado ou destruídos.A única solução é para sistema autônomo objetos pai e filho concordar em um padrão fixo de uso e a destruição, por exemplo, em que o pai sempre exclui o filho primeiro.

Ao desenvolver aplicativos em uma linguagem que atinge o common language tempo de execução, o coletor de lixo do tempo de execução elimina a necessidade para contagem de referência e, sistema autônomo resultado, sistema autônomo bugs que podem surgir desse esquema de gerenciamento de memória manual.

Desenvolvedores do C++

Os desenvolvedores de C++ estão acostumados a tarefas relacionadas ao gerenciamento de memória manual.No C++, quando você alocar memória para um objeto usando o novo operador, você deve versão memória do objeto usando o Excluir operador.Isso pode levar a erros, sistema autônomo esquecer de liberar um objeto e causando um perda de memória ou tentando acessar a memória para um objeto que já foi liberado.

Ao desenvolver aplicativos usando o Visual C++ ou outra linguagem que atinge o common language tempo de execução, não é necessário usar o Excluir operador para liberar um objeto.O coletor de lixo faz isso para você automaticamente quando o objeto não está sendo usado pelo aplicativo.

Os desenvolvedores de C++ podem estar acostumados a evitar o uso de objetos de curto prazo devido ao custo associado de gerenciar a memória para esses objetos manualmente.Para objetos de curto prazo gerenciado que são criados e, em seguida, vá para fora do escopo entre coleções, o custo de alocação e liberação de memória é extremamente baixo.No .NET estrutura, o coletor de lixo, na verdade, é otimizado para gerenciar objetos com vidas úteis curtas.Ao desenvolver aplicativos gerenciado, é apropriado usar objetos de curto prazo em situações onde simplificar o seu código.

Desenvolvedores de Visual Basic

Os desenvolvedores de Visual Basic estão acostumados a gerenciamento automático de memória.As práticas de programação você estiver familiarizado com o aplicará à maioria dos objetos gerenciado criados no .NET estrutura.No entanto, tome Observação especial do padrão de design sugerido para um Método Dispose para usar ao criar ou usar os objetos que encapsulam recursos não gerenciados.

O .NET estrutura oferece suporte a mais linguagens que visam common linguagem tempo de execução daqueles mencionados aqui.Independentemente de qual linguagem gerenciada usar, coletor de lixo do .NET estrutura oferece gerenciamento automático de memória.Ele aloca e libera a memória para objetos gerenciado e, quando necessário, executa Finalizar métodos e destrutores para limpar adequadamente os recursos não gerenciado.Gerenciamento automático de memória simplifica o desenvolvimento, eliminando os bugs comuns que surgem da possibilidade de esquemas de gerenciamento de memória manual.

Consulte também

Conceitos

Finalizar métodos and Destructors

Outros recursos

Coleta de Lixo