A maioria das linguagens de programação suporta programação orientada a objetos. É uma metodologia para construir um programa ou software usando objetos. Um objeto é criado usando uma classe, portanto, é uma instância de uma classe. Uma classe fornece a descrição do que o objeto deve consistir. Ao criar objetos, a memória é alocada para os objetos. A memória alocada deve ser liberada no final da execução do programa para reutilizar essa memória para outro objeto. Linguagens de programação como Java e C # .NET usam coletores de lixo para gerenciamento de memória, enquanto linguagens como C e C ++ exigem que o programador manipule o gerenciamento de memória. A quantidade necessária de memória deve ser alocada e, no final da execução, a memória deve ser liberada. O coletor de lixo e o destruidor são usados para liberar memória. o diferença chave entre o coletor de lixo e o destruidor é que um coletor de lixo é um software que executa o gerenciamento automático de memória enquanto um destruidor é um método especial chamado pelo coletor de lixo durante a destruição do objeto.
1. Visão geral e principais diferenças
2. O que é um coletor de lixo
3. O que é um destruidor
4. Semelhanças entre coletor de lixo e destruidor
5. Comparação Lado a Lado - Coletor de Lixo vs Destruidor em Forma Tabular
6. Resumo
Algumas linguagens de programação gerenciam ambientes de código. Nas linguagens de programação Java e C #, o gerenciamento automático de memória é realizado. O programador não precisa liberar a memória usada pelos objetos. É mais fácil para eles desenvolver sistemas ainda mais complexos porque o gerenciamento de memória é feito automaticamente. Nas linguagens de programação C, C ++ e Objective C, o programa deve liberar a memória dos objetos de volta ao sistema. Idiomas como Java e C # podem descobrir os objetos que não são mais usados. Depois, eles liberam a memória alocada para esses objetos de volta ao sistema.
Nas linguagens de programação C # e Java, se houver uma classe chamada Student, um objeto poderá ser criado usando Student s = new Student (); O 'novo' é usado para criar uma instância da classe Student. Aloca memória no sistema. O 's' está se referindo ao bloco de memória alocado para esse objeto. Os ambientes de linguagem identificam se os objetos estão sendo usados ou não. Se não forem mais utilizados, a memória é liberada e pode ser usada posteriormente.
Figura 01: Coletor de lixo e destruidor
Ao executar um programa, os blocos de memória são alocados no pool de memória do sistema. Em seguida, o programa executa as tarefas usando essa memória. Quando a execução do programa termina, o coletor de lixo descobre se os blocos de memória alocados para o programa são essenciais ou não. Se não forem necessários, esses blocos de memória serão retornados ao sistema. Portanto, o coletor de lixo pode rastrear os objetos criados no programa. Os blocos de memória que não são mais necessários são enviados de volta ao conjunto de memórias do sistema. A principal vantagem desse processo é confirmar que o programador não precisa se concentrar na desalocação de memória. Equilibra desempenho e uso de memória.
Um destruidor é uma função de membro especial de uma classe. É invocado sempre que o objeto sai do escopo. O objeto pode ser destruído quando uma função termina ou no final da execução do programa. O destruidor tem o mesmo nome que o nome da classe. O construtor é usado para criar o objeto. Pode aceitar parâmetros. O construtor também pode ter valores de retorno. Mas em um Destructor, não há tipo de retorno ou parâmetros de aceitação. Uma classe pode consistir apenas em um destruidor. Um destruidor é referido usando o sinal de til. Se o nome da turma for Student, o destruidor será ~ Student () .
O coletor de lixo procura os objetos que não são mais necessários. Ele garante que os objetos que não são mais usados pelo programa sejam destruídos. Ele chama o destruidor para liberar a memória e desalocar os recursos. Os destruidores são úteis para liberar memória, fechar arquivos, liberar recursos de rede e fechar conexões de banco de dados. Na maioria das linguagens de programação, não é necessário gravar o destruidor, porque o coletor de lixo chama o construtor padrão sozinho. Se o programador fez alguma alocação dinâmica de memória usando ponteiros em uma linguagem como C ++, ele deve escrever um destruidor para liberar memória antes que o objeto seja destruído.
Garbage Collector vs Destructor | |
Um coletor de lixo é um software que executa o gerenciamento automático de memória. | Um destruidor é um método especial chamado pelo coletor de lixo durante a destruição do objeto. |
Tipo | |
Um coletor de lixo é um software. | Um destruidor é um método. |
Coletor de lixo e destruidor são dois termos associados à liberação de memória. Este artigo discutiu a diferença entre o Garbage Collector e o destruidor. A diferença entre o coletor de lixo e o destruidor é que um coletor de lixo é um software que executa o gerenciamento automático de memória enquanto um destruidor é um método especial chamado pelo coletor de lixo durante a destruição do objeto.
Você pode fazer o download da versão em PDF deste artigo e usá-la para fins offline, conforme nota de citação. Faça o download da versão em PDF aqui: Diferença entre Garbage Collector e Destructor
1.lyndapodcast. “Como funciona a coleta de lixo em C # | lynda. Com tutorial. Como funciona a coleta de lixo em C # | tutorial lynda.Com, LinkedIn Learning Solutions, 19 de setembro de 2011. Disponível aqui
2.Destrutores em C. " GeeksforGeeks, 27 de maio de 2017. Disponível aqui
3.Jain, Shubham. “Coletor de lixo e destruidor em c #.” C # Canto. Disponivel aqui