Domanda

È possibile che un linguaggio non interpretato abbia un Garbage Collector. Le lingue interpretate hanno l'interprete che esegue il programma riga per riga, quindi l'interprete potrebbe anche fornire un runtime con un GC. Ma è possibile avere un Garbage Collector per qualsiasi altra lingua senza creare il GC nel codice stesso?

È stato utile?

Soluzione

Sì.

Il C ++ con un'implementazione del puntatore intelligente verrà garbage collection man mano che i conteggi del riferimento del puntatore intelligente diventano zero.

Hai immondizia. Non l'hai costruito tu stesso.

Altri suggerimenti

La garbage collection richiede solo che le variabili del puntatore siano contrassegnate in modo speciale in modo che il runtime possa identificarle e utilizzarle per la garbage collection. Non ha nulla a che fare con l'interpretazione / compilazione, ma richiede invece un runtime speciale e la memorizzazione di dati aggiuntivi con ogni variabile.

Bene, i linguaggi .NET (che emettono in IL - C #, VB.NET, MC ++, ecc.) non sono interpretati (specialmente se usi NGEN) - e ha la garbage collection completa.

Allo stesso modo, Java.

Per un'implementazione effettiva in un linguaggio compilato, in questo caso C e / o C ++, vedere Boehm GC in http://www.hpl.hp.com/personal/Hans_Boehm/gc/

Haskell ha Garbage Collection, sia che sia compilato in codice nativo o interpretato.

Il nuovo C ++ 0x include funzionalità che semplificano l'implementazione della garbage collection. Vedi questa intervista per esempio.

Objective-C 2 ora ha Garbage Collection e ci sono librerie di Garbage Collection disponibili anche per C ++.

Penso che sia possibile finché esiste la lingua che consente di ispezionare gli oggetti in modo da poter attraversare l'albero degli oggetti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top