Skip to main content

O que é uma referência suave?

Na linguagem de codificação Java®, são feitas referências constantemente a objetos, seqüências de caracteres e variáveis, mesmo que o programador não tenha conhecimento dessas referências. Essas referências se comunicam diretamente com o coletor de lixo, uma função que reúne informações desnecessárias e as joga fora para que não ocupe mais memória. Por padrão, todas as referências são fortes e são definidas sem nenhuma codificação, o que significa que não são liberadas para o coletor de lixo. Uma referência suave permite que os dados sejam jogados fora. É a referência de nível médio para todas as referências não fortes.

Sempre que um programador faz algo com Java®, seja tão simples quanto criar uma string ou criar funções complexas, é feita uma referência. O programador não precisa escrever um comando de referência; a referência é feita automaticamente e é, por padrão, uma referência forte. Isso significa que os dados da referência não podem ser descartados, porque eles estão vinculados a objetos integrais necessários para todo o script.

Alguns dados precisam ser descartados, porque, de outra forma, consomem muita memória. Por exemplo, se um programador cria um script no qual números de série são usados ​​ou outras informações temporárias são reunidas ou criadas, manter essas informações se torna prejudicial. O programa Java® se recusaria a jogar fora as informações, mesmo quando desnecessárias, e o script precisaria de mais e mais memória para funcionar.

Ao especificar uma sequência ou seção como uma referência suave, que precisa ser colocada na codificação, isso informa ao coletor de lixo que os dados podem ser liberados. Uma vez liberada, a string ou seção será lida como "nula". O coletor de lixo, dependendo da configuração, decidirá quando os dados devem ser descartados.

Existem três referências não fortes: referência suave, referência fraca e referência fantasma. A referência fraca é a mais fraca e seus dados são descartados rapidamente. Referências suaves, que são melhores para scripts em que dados temporários podem ser usados ​​várias vezes, são os próximos da fila. Uma referência fantasma é descartada quase automaticamente, em um segundo, e deve ser usada com moderação.

O período de tempo que uma referência suave permanece geralmente depende da quantidade de memória no computador. Se a memória estiver cheia, o coletor de lixo primeiro destruirá todas as referências fracas. Quando todas as referências fracas desaparecerem e se a memória ainda precisar limpar os dados, as referências suaves serão descartadas a seguir.