Sběratel odpadků Boehm

Konzervativní sběratel odpadků Boehm-Demers-Weiser

Informace
Tvůrce Hans-J. Boehm, Alan J. Demers, Mark Weiser
Poslední verze 8.0.4 (2. března 2019)
Vklad https://github.com/ivmai/bdwgc
Napsáno C, C ++
Jazyky podpory C, C ++
Licence Licence MIT a GNU General Public License
webová stránka https://www.hboehm.info/gc/

Sběrač odpadků Boehm - Demers - Weiser, často nazývaný Boehm GC, je sběrač odpadků (anglicky Garbage collector English), konzervativní pro jazyk C a C ++, který vyvinuli Hans Boehm, Alan Demers a Mark Weiser .

Boehm GC je svobodný software distribuovaný na základě permisivní licence podobné licenci X11 .

Úkon

Jeho provoz popisuje Hans Boehm takto:

"Sběratel používá algoritmus zametání značek." Poskytuje přírůstkové a generační shromažďování v operačních systémech, které poskytují správný druh podpory virtuální paměti. (V současné době to zahrnuje SunOS [45], IRIX, OSF / 1, Linux a Windows s různými omezeními.) Umožňuje vyvolání finalizačního kódu při sběru objektu. Může použít výhodu informací o typu k vyhledání ukazatelů, pokud jsou takové informace poskytnuty, ale obvykle se používá bez těchto informací. "

Boehm GC také pracuje v režimu detekce úniků . V tomto režimu je paměť vždy spravována ručně, ale Boehm GC kontroluje, aby lépe identifikovala úniky paměti i více deallocationů.

Chirurgická operace

Tento garbage collector pracuje s většinou programů C bez nutnosti zásadních úprav. Stačí nahradit malloc () za GC_MALLOC () , realloc () za GC_REALLOC () a odebrat volání free () . Následující příklad ukazuje případ použití.

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

použití

Mnoho projektů implementovaných v C / C ++ používá Boehm GC, včetně kancelářských aplikací ( Inkscape ), ale také některých běhových prostředí ( Crystal (programovací jazyk), GNU Compiler for Java , projekt Portable.NET , Embeddable Common Lisp , my Mono implementace of Microsoft.NET )

Boehm GC podporuje také různé operační systémy včetně GNU / Linux , MacOS , BSD a Microsoft Windows

Poznámky a odkazy

  1. Hans Boehm, sběrač odpadků pro C a C ++
  2. Andrew W. Appel (1998), Implementace moderního kompilátoru v C - „ Boehm Conservative Garbage Collector
  3. Použití programu Garbage Collector jako detektoru úniku
  4. Sandeep Koranne , Příručka nástrojů Open Source , Springer,2011( ISBN  1441977198 , číst online ) , s.  151–154
  5. Použití programu Garbage Collector: Jednoduchý příklad

Podívejte se také