Boehm-jätteiden kerääjä

Boehm-Demers-Weiser-konservatiivinen roskien keräilijä

Tiedot
Luoja Hans-J. Boehm, Alan J.Demers, Mark Weiser
Viimeinen versio 8.0.4 (2. maaliskuuta 2019)
Tallettaa https://github.com/ivmai/bdwgc
Kirjoitettu C, C ++
Tukikielet C, C ++
Lisenssi MIT-lisenssi ja GNU: n yleinen julkinen lisenssi
Verkkosivusto https://www.hboehm.info/gc/

Roskankerääjä Boehm - Demers - Weiser, jota kutsutaan usein Boehm GC: ksi, on jätteiden kerääjä (englanninkielinen roskakeräilijä) Hans Boehmin, Alan Demersin ja Mark Weiserin kehittämä konservatiivi C: lle ja C ++ : lle .

Boehm GC on ilmainen ohjelmisto, joka on julkaistu X11-lisenssin kaltaisella sallivalla lisenssillä .

Operaatio

Hans Boehm kuvailee sen toimintaa seuraavasti:

”Keräilijä käyttää mark-sweep-algoritmia. Se tarjoaa inkrementaalista ja sukupolven keruuta käyttöjärjestelmissä, jotka tarjoavat oikeanlaisen virtuaalimuistituen. (Tämä sisältää tällä hetkellä SunOS [45], IRIX, OSF / 1, Linux ja Windows, vaihtelevilla rajoituksilla.) Se sallii viimeistelykoodin käyttämisen objektia kerätessä. Voi käyttää tyyppitietoja etsimään osoittimia, jos tällaisia ​​tietoja annetaan, mutta niitä käytetään yleensä ilman tällaisia ​​tietoja. "

Boehm GC toimii myös vuodonilmaisutilassa . Tässä tilassa muistia hallitaan aina manuaalisesti, mutta Boehm GC tarkistaa muistivuotojen ja useiden jakautumisten tunnistamiseksi paremmin.

Leikkaus

Tämä roskien keräilijä toimii useimpien C-ohjelmien kanssa ilman suuria muutoksia. Vain korvata malloc () by GC_MALLOC () , realloc () by GC_REALLOC () ja poista puhelut ilmaiseksi () . Seuraava esimerkki näyttää käyttötapauksen.

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

käyttää

Monet C / C ++ -sovelluksessa toteutetut projektit käyttävät Boehm GC: tä, mukaan lukien toimistosovellukset ( Inkscape ), mutta myös joitain ajonaikaisia ​​ympäristöjä ( Crystal (ohjelmointikieli), GNU Compiler for Java , Portable.NET- projekti , Embeddable Common Lisp , minun Mono täytäntöönpano on Microsoft.NET )

Boehm GC tukee myös erilaisia ​​käyttöjärjestelmiä, kuten GNU / Linux , MacOS , BSD ja Microsoft Windows

Huomautuksia ja viitteitä

  1. Hans Boehm, roskien keräilijä C: lle ja C ++: lle
  2. Andrew W. Appel (1998), Modern Compiler Implementation in C - " Boehm Conservative Garbage Collector "
  3. käyttäminen vuotoilmaisimena
  4. Sandeep Koranne , avoimen lähdekoodin työkalujen käsikirja , Springer,2011( ISBN  1441977198 , lue verkossa ) , s.  151–154
  5. käyttäminen: Yksinkertainen esimerkki

Katso myös