Article View: pl.comp.lang.funkcyjne
Article #120Re: Pewien problem z odsmiecaniem.
From: Mariusz K. Grzeca
Date: Thu, 12 Dec 2002 13:19
Date: Thu, 12 Dec 2002 13:19
70 lines
3252 bytes
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-mailReferences:
<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