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
edytujOdś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- Oficjalna strona domowa (ang)
- Omówienie implementacji (ang). hpl.hp.com:80. [zarchiwizowane z tego adresu (2013-10-31)].
- Strona na Sourceforge (ang)