🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.funkcyjne
Article #120

Re: Pewien problem z odsmiecaniem.

#120
From: Mariusz K. Grzeca
Date: Thu, 12 Dec 2002 13:19
70 lines
3252 bytes
Lucifer wrote:

> Dzieki, poczytam.. Jakie sa wogole rodzaje odsmiecaczy, jak je mozna
> podzielic i scharakteryzowac?

Np. podział ze względu na mechanizm znajdowania śmieci:

liczniki odniesień (reference counting) vs odśmiecacze śledzące (tracing 
garbage collectors).

zalety liczników odniesień:

* łatwo zaimplementować
* przy leniwym niszczeniu obiektów zapewniają minimalne przerwy w 
działaniu programu
* pozwalają szybko odzyskiwać pamięć (już w momencie, gdy obiekt traci 
ostatnie dowiązanie)

wady:

* nie są w stanie zwolnić struktur cyklicznych (problem wyjaśnił Tomek)
* wykonują zawsze pracę proporcjonalną do pracy wykonywanej przez 
program, a nie do tempa alokacji obiektów, czy też tempa tworzenia śmieci
* są zazwyczaj zbudowane w oparciu o normalny malloco-podobny alokator 
ogólnego przeznaczenią, więc posiadają te same co on wady - fragmentują 
pamięć, duży średni koszt alokacji/dealokacji pojedynczego obiektu

W praktyce nie używa się ich...

Odśmiecacze śledzące:

najprostszy, naiwny odśmiecacz typu mark-and-sweep działa następująco:

* mamy sterte o określonym rozmiarze, np. 100 kilo.
* gdy jest na niej za mało wolnego miejsca, by zrealizować aktualne 
żądanie akokacji pamięci zatrzymujemy działanie programu.
* zaczynając od obiektów statycznie zaalokowanych, oraz mających 
dowiązania w rejestrach i na stosie śledzimy graf dowiązań
* wszystkie obiekty, do których trafiamy zaznaczamy jako "żywe" (np. 
korzystając ze specjalnego pola bitowego w nagłówku obiektu).
* po przejrzeniu całego grafu przeglądamy liniowo stertę i "usuwamy" 
wszystkie obiekty, które nie są "żywe", pozostałe "odznaczamy".

zalety:
* wykonuje zawsze pracę proporcjonalną do tempa alokacji obiektów
* zależne od typu, implementacji i zastosowania

wady:
* zależne od typu, implementacji i zastosowania

Same śledzące można podzielić na:

kopiujące i typu mark-and-sweep

albo na:

generacyjne i niegeneracyjne

albo na:

typu stop-and-collect, inkrementalne, współbieżne i równoległe

albo na:

konserwatywne i precyzyjne.



Najlepszym źródłem wiedzy na ten temat jest wspomniany przez Michała 
papier Wilsona...
Technical Details
Message-ID: <ata2ja$74g$1@news.tpi.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!newsfeed.tpinternet.pl!news.tpi.pl!not-for-mail
References: <at84vp$n9r$1@news.tpi.pl> <slrnavf6as.go4.t.zielonka@zodiac.mimuw.edu.pl> <at8b7s$aqe$2@news.tpi.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!newsfeed.tpinternet.pl!news.tpi.pl!not-for-mail
From: "Mariusz K. Grzeca" <mgrzeca@sokrates.mimuw.edu.pl>
Newsgroups: pl.comp.lang.funkcyjne
Subject: Re: Pewien problem z odsmiecaniem.
Date: Thu, 12 Dec 2002 14:19:55 +0100
Organization: tp.internet - http://www.tpi.pl/
Lines: 71
Message-ID: <ata2ja$74g$1@news.tpi.pl>
References: <at84vp$n9r$1@news.tpi.pl> <slrnavf6as.go4.t.zielonka@zodiac.mimuw.edu.pl> <at8b7s$aqe$2@news.tpi.pl>
NNTP-Posting-Host: pp38.warszawa.cvx.ppp.tpnet.pl
Mime-Version: 1.0
X-Trace: news.tpi.pl 1039699371 7312 213.76.111.38 (12 Dec 2002 13:22:51 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Thu, 12 Dec 2002 13:22:51 +0000 (UTC)
In-Reply-To: <at84vp$n9r$1@news.tpi.pl>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2b) Gecko/20021016
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit