O que é uma referência fraca?

Uma referência fraca é uma referência a um objeto na memória que não impede que um objeto seja limpo pelas rotinas de coleta de lixo devido à sua associação com o objeto. Esse tipo de referência é comumente usado para ajudar a eliminar vazamentos de memória quando existem condições especiais que impedem a coleta normal de lixo. Os algoritmos de programação que usam uma referência circular ou mantêm informações estranhas em um cache ou em uma estrutura especial se beneficiam usando referências fracas. A utilização de referências fracas nesses tipos de situações permite a limpeza de objetos de referência não utilizados e suas referências fracas associadas.

Na programação de computadores, uma referência forte normalmente é criada por padrão quando um objeto é criado, e a memória ocupada pelo objeto permanece alocada enquanto a referência forte permanecer viável. Uma referência forte é anulada e a memória do objeto associado é liberada logo após uma referência forte e seu objeto é sinalizado como não sendo mais usado por um programa. Em certas situações, como aplicativos de programação de soquete ou manipulação de imagem, as classes usadas para criar objetos de trabalho não têm a capacidade interna de armazenar informações adicionais necessárias para um aplicativo específico. Os detalhes adicionais para objetos transitórios, como conexões ou figuras, precisam ser armazenados em objetos de cache suplementares e vinculados aos objetos transitórios por referências. Quando uma referência fraca é usada em vez de uma referência forte, as informações extras não são vinculadas pela referência e podem ser removidas do cache pelo coletor de lixo depois que o objeto referente tiver sido marcado como inviável.

Classes de referência fracas normalmente estão disponíveis em linguagens aumentadas pelos subsistemas de coleta de lixo, incluindo Java, Python, Perl, C # e a estrutura .NET. No C ++, no entanto, os programadores geralmente são responsáveis ​​por garantir a limpeza da memória. Essa linguagem implementou uma classe de ponteiro inteligente que fornece algumas das mesmas funcionalidades fornecidas por referências fracas e coleta de lixo, ajudando a reduzir o vazamento de memória causado pela limpeza incorreta do ponteiro.

Para facilitar ainda mais o gerenciamento de memória, os idiomas com recursos de coleta de lixo podem aprimorar adicionalmente a funcionalidade de um idioma, fornecendo gradientes mais refinados de referências que não sejam a referência forte ou fraca. Tipos de dados, como referências flexíveis e referências fantasmas, podem ser incluídos nesses idiomas, o que permite níveis variados de recaptura de objetos ou notificação de desalocação. Os programadores que usam linguagens com coleta de lixo automatizada devem se familiarizar com todas as classes de referência disponíveis para melhorar o desempenho do aplicativo.

OUTRAS LÍNGUAS

Este artigo foi útil? Obrigado pelo feedback Obrigado pelo feedback

Como podemos ajudar? Como podemos ajudar?