Le garbage collector Boehm – Demers – Weiser, souvent appelé Boehm GC, est un ramasse-miettes (garbage collector en anglais) conservateur pour C et C ++ développé par Hans Boehm, Alan Demers et Mark WeiserHans Boehm, A garbage collector for C and C++Andrew W. Appel, Modern Compiler Implementation in C, Boehm Conservative Garbage Collector, 1998..
Boehm GC est un logiciel libre distribué sous une licence permissive similaire à la licence X11.
Fonctionnement Son fonctionnement est décrit comme suit par Hans Boehm :
Le Boehm GC fonctionne également en mode détection de fuiteUsing the Garbage Collector as Leak Detector. Dans ce mode, la mémoire est toujours gérée manuellement, mais Boehm GC fait des vérifications afin de mieux cerner les fuites mémoires ainsi que les désallocations multiples.
Opération Ce ramasse-miettes fonctionne avec la plupart des programmes C sans nécessiter de modifications majeures. Il suffit de remplacer par , par et supprimer les appels à . L'exemple suivant montre un cas d'utilisationUsing the Garbage Collector: A simple example. #include <assert.h> #include <stdio.h> #include <gc.h>
int main(void) { int i; const size = 10000000;
GC_INIT(); for (i = 0; i < size; i++)
int **p = GC_MALLOC(sizeof *p); int *q = GC_MALLOC_ATOMIC(sizeof *q);
assert(*p == 0); *p = GC_REALLOC(q, 2 * sizeof *p); if (i == size-1) printf("Heap size = %zu\n", GC_get_heap_size());
return 0; }
Utilisation De nombreux projets implémentés en C/C++ utilisent Boehm GC, dont des applications bureautiques (Inkscape), mais aussi certains environnements d'exécution ( Crystal (langage de programmation), le Compilateur GNU pour Java, le projet Portable.NET, Embeddable Common Lisp, l'implémentation Mono de Microsoft.NET)
Boehm GC supporte également divers systèmes d'exploitation parmi lesquels GNU/Linux, MacOS, BSD et Microsoft Windows
Notes et références
Liens externes
Transparent Programmer-Directed Garbage Collection for C++, Hans-J. Boehm et Michael Spertus Dr. Dobbs The Boehm Collector for C and C ++, Gene Michael Stover, mars 2003
Catégorie:Algorithmique