Boehm szemétszedő

A Boehm-Demers-Weiser konzervatív szemétgyűjtő

Információ
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űvelet

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.

Sebészet

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; }

használat

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

Megjegyzések és hivatkozások

  1. Hans Boehm, a C és C ++ hulladékgyűjtője
  2. Andrew W. Appel (1998), Modern fordító megvalósítása a C - " Boehm konzervatív szemétgyűjtőben "
  3. A szemétgyűjtő használata szivárgásérzékelőként
  4. Sandeep Koranne , Nyílt forráskódú eszközök kézikönyve , Springer,2011( ISBN  1441977198 , online olvasás ) , p.  151–154
  5. A szemétgyűjtő használata: Egyszerű példa

Lásd is