¿Qué es una referencia suave?
En el lenguaje de codificación Java®, constantemente se hacen referencias a objetos, cadenas y variables, incluso si el programador desconoce esas referencias. Estas referencias se comunican directamente con el recolector de basura, una función que recopila información innecesaria y la arroja para que ya no ocupe más memoria. Por defecto, todas las referencias son referencias fuertes y se establecen sin ninguna codificación, lo que significa que no se liberan al recolector de basura. Una referencia suave permite que los datos se descarten. Es la referencia de nivel medio para todas las referencias no fuertes.
Cada vez que un programador hace algo con Java®, ya sea tan simple como hacer una cadena o crear funciones complejas, se hace una referencia. El programador no tiene que escribir un comando de referencia; la referencia se realiza automáticamente y es, por defecto, una referencia fuerte. Esto significa que los datos de la referencia no se pueden descartar, ya que están vinculados a objetos integrales necesarios para todo el script.
Sin embargo, es necesario desechar algunos datos porque, de lo contrario, ocupan mucha memoria. Por ejemplo, si un programador construye un script en el que se usan números de serie o se recopilan o crean otras piezas temporales de información, retener esta información se vuelve perjudicial. El programa Java® se negaría a tirar la información, incluso cuando no sea necesaria, y el script necesitaría más y más memoria para funcionar.
Al especificar una cadena o sección como referencia flexible, que debe colocarse en la codificación, esto le indica al recolector de basura que los datos se pueden liberar. Una vez liberado, la cadena o sección se leerá como "nulo". El recolector de basura, según su configuración, decidirá cuándo se deben desechar los datos.
Hay tres referencias no fuertes: referencia suave, referencia débil y referencia fantasma. La referencia débil es la más débil y sus datos se descartan rápidamente. Las referencias suaves, que son las mejores para los scripts en los que se pueden usar datos temporales varias veces, son las siguientes. Una referencia fantasma se descarta casi automáticamente, en un segundo, y debe usarse con moderación.
El período de tiempo que permanece una referencia suave generalmente depende de la cantidad de memoria en la computadora. Si la memoria está llena, el recolector de basura primero destruirá todas las referencias débiles. Cuando todas las referencias débiles hayan desaparecido, y si la memoria aún necesita purgar datos, las referencias suaves se descartarán a continuación.