Garbage collection: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Correzioni SOS eseguite. Ritengo che ci sia un problema di chiarezza nell'esposizione della voce. Per non esperti molti passi sono incomprensibili. |
m Bot: spazi attorno alle parentesi e modifiche minori |
||
Riga 19:
=== Benefici ===
La ''garbage collection'' esonera il programmatore dall'eseguire manualmente l'allocazione (
* ''[[Dangling pointer|'''Dangling pointers''']]'': persistenza nel programma di puntatori che si riferiscono ad aree di memoria che contenevano oggetti, ormai deallocate. Utilizzare tali aree di memoria deallocate può, nel migliore dei casi, provocare un errore fatale dell'applicazione, ma si possono manifestare altri problemi anche a distanza di tempo dalla effettiva deallocazione. La risoluzione di questi problemi può essere molto difficoltosa.
Riga 73:
==== Naïve mark-and-sweep ====
Nel ''mark-and-sweep'' ogni oggetto in memoria possiede un [[flag]], in genere è sufficiente un [[bit]], riservato esclusivamente per l'utilizzo del Garbage Collector. Quando l'oggetto viene creato, il [[flag]] viene posto in stato, ''flag clear''
Questo metodo ha diversi svantaggi, per esempio, l'intero sistema viene sospeso durante la Garbage Collectio in modo non sempre prevedibile e per periodi di tempo non determinabili a priori; questo tipo di comportamento può creare notevoli problemi in ambienti che necessitano di basse [[Latenza|latenze]] di risposta o in [[Real-time|sistemi real-time]] o mission critical, con possibili malfunzionamenti, [[deadlock]], e arresti che possono compromettere l'intero sistema. Inoltre, tutta la memoria di lavoro deve essere esaminata, minimo due volte, causando potenzialmente problemi nei sistemi a [[memoria virtuale|memoria paginata]].
Riga 121:
==== Generational Garbage Collector (Ephemeral Garbage Collector) ====
È stato osservato che in molti programmi gli oggetti più recenti, sono anche quelli con più probabilità di diventare rapidamente irraggiungibili
Generational Garbage collection è un approccio [[Algoritmo euristico|euristico]] e alcuni oggetti irraggiungibili non possono essere recuperati ad ogni ciclo. Talvolta può quindi essere necessario recuperare tutto lo spazio disponibile. In effetti, i sistemi di runtime per i moderni linguaggi di programmazione (come [[java (linguaggio di programmazione)|java]]) di solito usano alcune varianti delle diverse strategie che sono state descritte sino ad ora.
|