Una referencia blanda es una referencia que se recolecta como basura de forma menos agresiva. La referencia blanda es una de las fortalezas o niveles de referencia "no fuerte " definidos en el lenguaje de programación Java , siendo las otras débil y fantasma . En orden de más fuerte a más débil, son: fuerte, blanda, débil, fantasma.
Las referencias blandas se comportan de manera casi idéntica a las referencias débiles. Las referencias blandas y débiles proporcionan dos cuasi-prioridades para los objetos que no tienen una referencia fuerte: el recolector de basura siempre recolectará objetos con referencias débiles, pero solo recolectará objetos con referencias suaves cuando sus algoritmos decidan que la memoria es lo suficientemente baja como para justificarlo.
Las referencias suaves se pueden utilizar, por ejemplo, para escribir un caché sensible a la memoria libre , de modo que los objetos almacenados en caché se conserven hasta que no haya suficiente espacio en el montón. En algunos casos, los objetos con referencias débiles se pueden recuperar demasiado rápido para que un caché de este tipo sea útil.