Che cos'è un riferimento morbido?
Nel linguaggio di programmazione Java®, i riferimenti vengono costantemente fatti 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 informazioni non necessarie e le butta via in modo da non occupare più memoria. Per impostazione predefinita, tutti i riferimenti sono riferimenti forti e sono impostati senza alcuna codifica, il che significa che non vengono rilasciati al Garbage Collector. Un riferimento morbido 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®, sia esso 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 fatto automaticamente ed è, di default, un riferimento forte. Ciò significa che i dati del riferimento non possono essere eliminati, poiché sono collegati a oggetti integrali necessari per l'intero script.
Tuttavia, alcuni dati devono essere eliminati perché altrimenti occupano molta memoria. Ad esempio, se un programmatore crea uno script in cui vengono utilizzati i numeri di serie o vengono raccolte o create altre informazioni temporanee, trattenere queste informazioni diventa dannoso. Il programma Java® rifiuta di gettare via le informazioni, anche quando non sono necessarie, e lo script avrebbe bisogno di sempre più memoria per funzionare.
Specificando una stringa o una sezione come riferimento software, che deve essere inserito nella codifica, ciò 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, in base alla sua impostazione, deciderà quando i dati devono essere eliminati.
Esistono 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 gettato via quasi automaticamente, entro un secondo, e dovrebbe essere usato con parsimonia.
Il tempo di permanenza di un riferimento software dipende in genere dalla quantità di memoria nel computer. Se la memoria è piena, il Garbage Collector distruggerà prima tutti i riferimenti deboli. Quando tutti i riferimenti deboli sono spariti e se la memoria deve ancora eliminare i dati, i riferimenti software verranno eliminati successivamente.