1
resposta

Dúvida sobre ciclo de vida dos objetos de uma classe em memória

Como o ambiente de execução do Python gerencia o ciclo de vida dos objetos em memória. Em outras palavras, como o Python sabe quando deve desalocar o espaço de um objeto que não está sendo mais usado da memória e quem faz este trabalho?

Em aplicações maiores e que exigem uma grande uma alta atividade de processamento e que trabalhem com um grande volume de dados, zelar pelos recursos computacionais é sempre bem-vindo. Porque devemos ou não devemos confiar nesse tipo de abstração provida pelo conjunto formado pela linguagem e pelo ambiente de execução em uma aplicação Python?

Ex: No mundo Java (para versões mais antigas de JVM) tínhamos o famoso GC (Garbage Collector). O que seria equivalente no universo do Python?

1 resposta

Oii Thiago, como você está? Espero que esteja bem ^-^

Internamente o Python utiliza um Garbage Collector responsável por coletar as "sujeiras" do nosso código, como é o caso de variáveis que não possuem referências. Esse Garbage Colletor foi implementado por pessoas que conhecem a fundo da linguagem, portanto, vale o benefício da confiança hahaha

"Funciona assim, de tempos em tempos o GC do Python percorre a lista de objetos registrados e verifica se existe referência para cada objeto da lista. Se não existir mais referência para eles (ou seja, o número de referências for igual a zero), o Collector desaloca a memória usada por esse objeto."

Caso o seu código esteja prezando por boas práticas de programação, não terá que se preocupar tanto com a coleta que o GC fará ao longo do código, mesmo que exija uma grande quantidade de processamento.

Para casos específicos onde precise manipular o Collector, temos um módulo no python que permite alterações no fluxo do GC. Abaixo, a documentação:

Acrescento como sugestão de leitura o artigo "O que é e como funciona o Garbage Collector em Python".

Qualquer dúvida estou por aqui, tá?

Abraços!