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 di computer, un forte riferimento viene in genere creato per impostazione predefinita quando viene creato un oggetto e la memoria occupata dall'oggetto rimane assegnato fintanto che il forte riferimento rimane praticabile. Un forte riferimento diventa annullato e il suo associatoLa memoria di Object 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 extra non sono vincolate dal riferimento e possono essere rimosse dalla cache dal collettore di immondizia una volta che l'oggetto referente è stato contrassegnato come non vitale.

Classi di riferimento deboli sono normalmente disponibili in lingue che sono aumentate dai sottosistemi di raccolta dei rifiuti, tra cui Java, Python, Perl, C#e .NET Framwork. In C ++, tuttavia, i programmatori sono in genere ResPonsibile per 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 del puntatore improprio.

Per facilitare ulteriormente la gestione della memoria, le lingue con impianti di raccolta dei rifiuti possono inoltre migliorare la funzionalità di una lingua 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.

ALTRE LINGUE

Questo articolo è stato utile? Grazie per il feedback Grazie per il feedback

Come possiamo aiutare? Come possiamo aiutare?