Skip to main content

Cos'è un riferimento debole?

Un riferimento debole è un riferimento a un oggetto in memoria che non impedisce a un oggetto di essere ripulito dalle routine di raccolta dei rifiuti a causa della sua associazione con l'oggetto.Questo tipo di riferimento è comunemente usato per aiutare a eliminare le perdite di memoria quando esistono condizioni speciali che impediscono la normale raccolta della spazzatura.Algoritmi di programmazione che utilizzano un riferimento circolare o detengono informazioni estranee in una cache o una struttura speciale beneficiando usando riferimenti deboli.L'utilizzo di riferimenti deboli in questi tipi di situazioni consente la pulizia di oggetti referenti inutilizzati e i loro riferimenti deboli associati.

Nella programmazione del computer, un forte riferimento viene generalmente creato per impostazione predefinita quando viene creato un oggetto e la memoria occupata daL'oggetto rimane assegnato fintanto che il forte riferimento rimane praticabile.Un forte riferimento viene annullato e la memoria degli oggetti associati viene liberata poco dopo un forte riferimento e il suo oggetto viene contrassegnato poiché non viene più utilizzato da un programma.In alcune situazioni, come la programmazione socket o le applicazioni di manipolazione delle immagini, le classi utilizzate per creare oggetti di lavoro non hanno la capacità integrata di archiviare ulteriori informazioni che sono necessarie da una specifica applicazione.I dettagli aggiuntivi per oggetti transitori come connessioni o immagini devono essere archiviati negli oggetti di cache supplementari e collegati agli oggetti transitori mediante riferimenti.Quando viene utilizzato un riferimento debole anziché un forte riferimento, le informazioni aggiuntive non sono vincolate dal riferimento e possono essere rimosse dalla cache dal collettore della spazzatura una volta che l'oggetto referente è stato contrassegnato come non vitale.

Le classi di riferimento deboli sono normalmenteDisponibili in lingue che sono aumentate dai sottosistemi della raccolta dei rifiuti, tra cui Java, Python, Perl, C#e .NET Framework.In C ++, tuttavia, i programmatori sono in genere responsabili di garantire la pulizia della memoria.Questo linguaggio ha implementato una classe di punta intelligente che fornisce alcune delle stesse funzionalità che forniscono riferimenti deboli e immondizia, contribuendo a ridurre le perdite di memoria causate dalla pulizia impropria del puntatore.

Per facilitare ulteriormente la gestione della memoria, i linguaggi con impianti di raccolta dei rifiuti possono inoltreMigliorare la funzionalità di un linguaggio fornendo gradienti più fini di riferimenti diversi dal riferimento forte o debole.I tipi di dati come riferimenti morbidi e riferimenti fantasma possono essere inclusi in queste lingue, il che consente diversi livelli di riconquista degli oggetti o notifica di trasporto.I programmatori che usano i linguaggi con la raccolta di immondizia automatizzata dovrebbero familiarizzare con tutte le classi di riferimento disponibili per migliorare le prestazioni dell'applicazione.