Che cos’è un riferimento morbido?

Nel linguaggio di codifica Java®, vengono costantemente fatti riferimenti a oggetti, stringhe e variabili, anche se il programmatore non è a conoscenza di tali riferimenti. Questi riferimenti comunicano direttamente con il garbage collector, una funzione che raccoglie le informazioni non necessarie e le butta via in modo che non occupi più memoria. Per impostazione predefinita, tutti i riferimenti sono riferimenti forti e vengono impostati senza alcuna codifica, il che significa che non vengono rilasciati al Garbage Collector. Un riferimento software consente di eliminare i dati. È il riferimento di livello medio per tutti i riferimenti non forti.

Ogni volta che un programmatore fa qualcosa con Java®, che sia semplice come creare una stringa o creare funzioni complesse, viene fatto un riferimento. Il programmatore non deve scrivere un comando di riferimento; il riferimento viene effettuato automaticamente ed è, per impostazione predefinita, un riferimento forte. Ciò significa che i dati del riferimento non possono essere gettati via, perché sono collegati a oggetti integrali necessari per l’intero script.

Tuttavia, alcuni dati devono essere eliminati, perché altrimenti occuperanno molta memoria. Ad esempio, se un programmatore crea uno script in cui vengono utilizzati numeri di serie o vengono raccolte o create altre informazioni temporanee, conservare queste informazioni diventa dannoso. Il programma Java® si rifiuterebbe di buttare via le informazioni, anche quando non sono necessarie, e lo script richiederebbe sempre più memoria per funzionare.

Specificando una stringa o una sezione come riferimento software, che deve essere inserito nella codifica, questo indica al Garbage Collector che i dati possono essere rilasciati. Una volta rilasciata, la stringa o la sezione verrà letta come “null”. Il Garbage Collector, a seconda della sua impostazione, deciderà quando i dati devono essere eliminati.

Ci sono tre riferimenti non forti: riferimento morbido, riferimento debole e riferimento fantasma. Il riferimento debole è il più debole e i suoi dati vengono eliminati rapidamente. I riferimenti software, che sono i migliori per gli script in cui i dati temporanei possono essere utilizzati più volte, sono i prossimi nella riga. Un riferimento fantasma viene scartato quasi automaticamente, entro un secondo, e dovrebbe essere usato con parsimonia.

Il periodo di tempo in cui rimane un riferimento software di solito dipende dalla quantità di memoria nel computer. Se la memoria è piena, il Garbage Collector prima distruggerà tutti i riferimenti deboli. Quando tutti i riferimenti deboli sono spariti e se la memoria ha ancora bisogno di eliminare i dati, i riferimenti morbidi verranno eliminati.