Domanda

Ho letto articolo LinuxJournal su Boehm-Demers-Weiser garbage collector biblioteca . Sono interessato ad usarlo nella mia biblioteca al posto della mia implementazione reference counting.

Ho solo una domanda: è possibile usare gc solo per il mio libreria condivisa e usano ancora malloc / libera nel ricorso principale? Non sto ben capito controlli come gc mucchio così sto preoccuparsi di prestazioni di GC in quel caso e possibili effetti collaterali.

È stato utile?

Soluzione

Il esempio negli stati manuale:

  

Di solito è meglio non mischiare allocazione garbage collection con il sistema malloc-free. Se lo fai, è necessario essere attenti a memorizzare i puntatori al mucchio garbage collection in memoria allocata con il malloc sistema.

E più precisamente per C ++:

  

Nel caso di C ++, è necessario essere particolarmente attenti a memorizzare i puntatori al mucchio garbage collection in aree che non sono tracciate dal collezionista. Il collettore comprende alcune interfacce alternative per rendere più facile che.

Guardando il codice sorgente nel manuale verrà memoria garbage collection viene gestita tramite chiamate specifiche, quindi, la gestione è gestito separatamente (sia dal collettore o manualmente). Quindi, fintanto la libreria gestisce i suoi interni correttamente e non espone la memoria raccolti, si dovrebbe andare bene. Non sai come altre librerie di gestire la loro memoria e si possono usare come bene, non è vero? :)

Altri suggerimenti

Credo che sì, è possibile mescolare i due: ma se si alloca un oggetto con l'allocatore normale che contiene un riferimento a un oggetto di allocare con la spazzatura raccolta uno, allora che la volontà di riferimento non essere visibili al GC affinché oggetto può essere prematuramente deallocato.

Date un'occhiata alla GC_MALLOC_UNCOLLECTABLE specifica funzione se è necessario il GC per tener conto dei riferimenti nella memoria che non devono essere raccolti.

In sintesi, sì, ma hic sunt leones se non si sta attenti!

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