Reference counting: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Aggiunto i vantaggi e gli svantaggi dell'algoritmo |
|||
(6 versioni intermedie di 4 utenti non mostrate) | |||
Riga 7:
==Usi nel garbage collection==
Il reference counting è spesso noto come un [[algoritmo]] di [[garbage collection]] dove ciascun oggetto contiene un contatore del
Un semplice reference counting richiede di essere spesso aggiornato. Quando un [[Riferimento (informatica)|riferimento]] viene distrutto o riscritto, il contatore dei riferimenti viene decrementato, mentre quando un riferimento viene creato o copiato, il contatore dei riferimenti viene incrementato.
Il reference counting è anche usato nelle operazioni sui [[Sistema operativo|sistemi operativi]] su disco o distribuiti, dove un completo garbage collection che traccia i riferimenti in un [[grafo]] o in un [[Albero (informatica)|albero]] è troppo oneroso computazionalmente.
== Vantaggi e svantaggi ==
I
Lo
L'algoritmo presenta il problema dei riferimenti circolari:
Riga 22:
Si considerino due oggetti (A e B) che puntano l'uno all'altro.
Sia
* Quello della variabile che li contiene (diretto)
Riga 29:
Quando uno dei due oggetti esce dal suo scope, non è più accessibile tramite la sua variabile e la sua memoria non può essere liberata, dal momento che un altro oggetto la sta referenziando (rischio di [[Dangling pointer|dangling reference]]) mentre l'effetto esterno è quello di un [[memory leak]].
La soluzione è utilizzare algoritmi di [[
==Interpretazione in teoria dei grafi==
Quando si considerano gli schemi di garbage collection, è spesso utile pensare al
In questo contesto, il semplice contatore di referenze di un oggetto è il numero delle sue connessioni.
Riga 41:
Essendo due oggetti concatenati fra loro è necessario gestire un contatore per ogni oggetto e, nel caso uno dei due oggetti esca dal suo scope non è più accessibile tramite la sua variabile e inoltre la sua memoria non può essere liberata in quanto un altro oggetto lo sta referenziando.
Questo dà effetto ad un
{{Portale|informatica}}
[[Categoria:Terminologia informatica]]
|