Boehm garbage collector
Boehm-Demers-Weiser garbage collector, w skrócie Boehm GC – konserwatywny odśmiecacz dla języków C i C++, używany przez wiele projektów w C, C++, a także przez środowiska uruchomieniowe wielu innych języków, w tym GNU Compiler for Java, projekt Portable.NET i implementację platformy .NET Mono. Działa na wielu systemach operacyjnych w tym na wielu wariantach Uniksa, na Microsoft Windows i OS X i udostępnia zaawansowane funkcje takie jak odśmiecanie przyrostowe, równoległe i różne składnie finalizerów.
Boehm GC to wolne oprogramowanie i jest dostępny na licencji podobnej do X11.
Przykład
Odśmiecacz działa z prawie niezmienionymi programami w C, potrzebna jest tylko podmiana wywołań malloc na GC_malloc, realloc na GC_realloc, i usunięcie wywołań free. Poniższy kod pokazuje jak można użyć Boehm zamiast funkcji malloc i free w C [1].
#include "gc.h" #include <assert.h> #include <stdio.h> int main() { int i; GC_INIT(); for (i = 0; i < 10000000; ++i) { int **p = (int **) GC_MALLOC(sizeof (int *)); int *q = (int *) GC_MALLOC_ATOMIC(sizeof (int)); assert(*p == 0); *p = (int *) GC_REALLOC(q, 2 * sizeof (int)); if (i % 100000 == 0) printf("Heap size = %d\n", GC_get_heap_size()); } return 0; }
Linki zewnętrzne
- Oficjalna strona domowa (ang)
- Omówienie implementacji (ang). hpl.hp.com:80. [zarchiwizowane z tego adresu (2013-10-31)].
- Strona na Sourceforge (ang)