Boehm affaldssamler

Den konservative Boehm-Demers-Weiser affaldssamler

Information
Skaberen Hans-J. Boehm, Alan J. Demers, Mark Weiser
Sidste version 8.0.4 (2. marts 2019)
Depositum https://github.com/ivmai/bdwgc
Skrevet i C, C ++
Support sprog C, C ++
Licens MIT-licens og GNU General Public License
Internet side https://www.hboehm.info/gc/

Affaldssamleren Boehm - Demers - Weiser, ofte kaldet Boehm GC, er en affaldssamler (affaldssamler engelsk) Konservativ for C og C ++ udviklet af Hans Boehm, Alan Demers og Mark Weiser .

Boehm GC er gratis software frigivet under en tilladelig licens svarende til X11-licensen .

Operation

Driften af ​​den beskrives som følger af Hans Boehm:

”Samleren bruger en mark-swe-algoritme. Det giver inkrementel og generationel indsamling under operativsystemer, der giver den rigtige slags support til virtuel hukommelse. (I øjeblikket inkluderer dette SunOS [45], IRIX, OSF / 1, Linux og Windows med forskellige begrænsninger.) Det gør det muligt at påberåbe sig færdiggørelseskode, når et objekt indsamles. Det kan drage fordel af typeoplysninger til at finde markører, hvis sådanne oplysninger gives, men de bruges normalt uden sådanne oplysninger. "

Boehm GC fungerer også i lækagedetekteringstilstand . I denne tilstand styres hukommelsen altid manuelt, men Boehm GC kontrollerer for bedre at identificere hukommelseslækager såvel som flere deallokationer.

Kirurgi

Denne affaldssamler arbejder med de fleste C-programmer uden at kræve større ændringer. Udskift bare malloc () med GC_MALLOC () , realloc () med GC_REALLOC () og fjern opkaldene til gratis () . Følgende eksempel viser en brugssag.

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

brug

Mange projekter implementeret i C / C ++ bruger Boehm GC, herunder kontorapplikationer ( Inkscape ), men også nogle runtime-miljøer ( Crystal (programmeringssprog), GNU Compiler til Java , Portable.NET- projektet , Embeddable Common Lisp , min Mono implementering af Microsoft.NET )

Boehm GC understøtter også forskellige operativsystemer, herunder GNU / Linux , MacOS , BSD og Microsoft Windows

Noter og referencer

  1. Hans Boehm, A affaldsindsamling for C og C ++
  2. Andrew W. Appel (1998), Modern Compiler Implementation in C - " Boehm Conservative Garbage Collector "
  3. Brug af affaldssamleren som lækagedetektor
  4. Sandeep Koranne , håndbog om open source-værktøjer , Springer,2011( ISBN  1441977198 , læst online ) , s.  151-154
  5. Brug af affaldssamleren: Et simpelt eksempel

Se også