貝姆垃圾收集器

貝姆垃圾收集器是計算機套用在C/C++語言上的一個保守的垃圾回收器(garbage collector),可套用於許多經由C\C++開發的專案。

基本介紹

  • 中文名:貝姆垃圾收集器
  • 外文名:Boehm-Demers-Weiser garbage collector
  • 又名:Boehm GC
  • 性質垃圾回收
  • 學科:計算機套用
  • 領域:計算機套用
定義,垃圾回收,範例,

定義

Boehm-Demers-Weiser garbage collector,也就是著名的Boehm GC,是計算機套用在C/C++語言上的一個保守的垃圾回收器,可套用於許多經由C/C++開發的專案,同時也適用於其它執行環境的各類程式語言,包括了GNU版Java編譯器執行環境,以及Mono的Microsoft .NET移植平台。同時支援許多的作業平台,如各種Unix作業系統,微軟的作業系統(Microsoft Windows),以及麥金塔上的作業系統(Mac OS X),還有更進一步的功能,例如:漸進式收集(incremental collection),平行收集(parallel collection)以及終結語意的變化(variety offinalizersemantics)。

垃圾回收

垃圾回收(英語:Garbage Collection,縮寫為GC)在計算機科學中是一種自動的存儲器管理機制。當一個電腦上的動態存儲器不再需要時,就應該予以釋放,以讓出存儲器,這種存儲器資源管理,稱為垃圾回收。垃圾回收器可以讓程式設計師減輕許多負擔,也減少程式設計師犯錯的機會。垃圾回收最早起源於LISP語言。目前許多語言如SmalltalkJavaC#D語言都支持垃圾回收器。

範例

垃圾收集器作用於未變性的(unmodified)C程式,只要簡單的將malloc呼叫用GC_malloc取代,將realloc取代為GC_realloc呼叫,如此一來便不需要使用到free的函式。下列的程式碼展示出如何用Boehm取代傳統的malloc以及free。
 #include "gc.h" #include <assert.h> #include <stdio.h> int main() {     int i;     GC_INIT();     for(i = 0; i < 10000000; I)     {         int **p = (int **) GC_MALLOC(sizeof (int *));         int *q = (int *) GC_MALLOC_ATOMIC(sizeof (int));         assert(*p == 0);         *p = (int *) GC_REALLOC(q, 2 * sizeof (int));         if(i % 100000 == 0)             printf("Heap size = %d\n", GC_get_heap_size());     }     return 0; }

相關詞條

熱門詞條

聯絡我們