Teremtő | Hans-J. Boehm, Alan J. Demers, Mark Weiser |
---|---|
Utolsó verzió | 8.0.4 (2019. március 2) |
Letét | https://github.com/ivmai/bdwgc |
Beírva | C, C ++ |
Támogató nyelvek | C, C ++ |
Engedély | MIT License és GNU General Public License |
Weboldal | https://www.hboehm.info/gc/ |
A Boehm - Demers - Weiser, gyakran Boehm GC néven futó szemétszedő egy szemétgyűjtő (angol szemétgyűjtő) konzervatív a C és C ++ számára, amelyet Hans Boehm, Alan Demers és Mark Weiser fejlesztett ki .
A Boehm GC egy ingyenes szoftver, amelyet az X11 licenchez hasonló megengedő licenc alapján terjesztenek .
Működését Hans Boehm a következőképpen írja le:
„A gyűjtő mark-sweep algoritmust használ. Inkrementális és generációs gyűjtést biztosít operációs rendszerek alatt, amelyek megfelelő típusú virtuális memóriát támogatnak. (Jelenleg ide tartoznak a SunOS [45], az IRIX, az OSF / 1, a Linux és a Windows, különböző korlátozásokkal.) Lehetővé teszi a véglegesítő kód meghívását egy objektum gyűjtésekor. Kihasználhatja a típusú információkat a mutatók felkutatásához, ha ilyen információt nyújtanak, de általában ilyen információk nélkül használják. "
A Boehm GC szivárgásérzékelési módban is működik . Ebben a módban a memóriát mindig manuálisan kezelik, de a Boehm GC ellenőrzi a memóriaszivárgások és a többszörös elosztások jobb azonosítását.
Ez a szemétgyűjtő a legtöbb C programmal együtt működik, anélkül, hogy nagyobb módosításokat igényelne. Csak cserélje malloc () által GC_MALLOC () , realloc () által GC_REALLOC () , és távolítsa el a hívásokat free () . A következő példa egy felhasználási esetet mutat be.
#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; }Számos C / C ++ programban megvalósított projekt használja a Boehm GC-t, beleértve az irodai alkalmazásokat ( Inkscape ), de néhány futásidejű környezetet is ( Crystal (programozási nyelv), a GNU Compiler for Java programot , a Portable.NET projektet , az Embeddable Common Lisp-t , a Mono-t végrehajtása a Microsoft.NET )
A Boehm GC különféle operációs rendszereket is támogat, beleértve a GNU / Linuxot , a MacOS-t , a BSD-t és a Microsoft Windows-ot