版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系我們

[科普中國]-貝姆垃圾收集器

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識(shí)科普陣地
收藏

貝姆垃圾收集器是計(jì)算機(jī)應(yīng)用在C/C++語言上的一個(gè)保守的垃圾回收器(garbage collector),可應(yīng)用于許多經(jīng)由C\C++開發(fā)的專案。

定義Boehm-Demers-Weiser garbage collector,也就是著名的Boehm GC,是計(jì)算機(jī)應(yīng)用在C/C++語言上的一個(gè)保守的垃圾回收器,可應(yīng)用于許多經(jīng)由C/C++開發(fā)的專案,同時(shí)也適用于其它執(zhí)行環(huán)境的各類編程語言,包括了GNU版Java編譯器執(zhí)行環(huán)境,以及Mono的Microsoft .NET移植平臺(tái)。同時(shí)支援許多的作業(yè)平臺(tái),如各種Unix操作系統(tǒng),微軟的操作系統(tǒng)(Microsoft Windows),以及麥金塔上的操作系統(tǒng)(Mac OS X),還有更進(jìn)一步的功能,例如:漸進(jìn)式收集(incremental collection),平行收集(parallel collection)以及終結(jié)語意的變化(variety offinalizersemantics)。1

垃圾回收垃圾回收(英語:Garbage Collection,縮寫為GC)在計(jì)算機(jī)科學(xué)中是一種自動(dòng)的存儲(chǔ)器管理機(jī)制。當(dāng)一個(gè)電腦上的動(dòng)態(tài)存儲(chǔ)器不再需要時(shí),就應(yīng)該予以釋放,以讓出存儲(chǔ)器,這種存儲(chǔ)器資源管理,稱為垃圾回收。垃圾回收器可以讓程序員減輕許多負(fù)擔(dān),也減少程序員犯錯(cuò)的機(jī)會(huì)。垃圾回收最早起源于LISP語言。目前許多語言如Smalltalk、Java、C#和D語言都支持垃圾回收器。1

范例垃圾收集器作用于未變性的(unmodified)C程式,只要簡單的將malloc呼叫用GC_malloc取代,將realloc取代為GC_realloc呼叫,如此一來便不需要使用到free的函式。下列的程式碼展示出如何用Boehm取代傳統(tǒng)的malloc以及free。

#include "gc.h" #include #include int main() { int i; GC_INIT(); for(i = 0; i