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[edytuj | edytuj kod]

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[edytuj | edytuj kod]