Article View: nl.comp.programmeren
Article #480Re: C# garbage collector
From: Marco van de Voort
Date: Sat, 20 Sep 2003 12:08
Date: Sat, 20 Sep 2003 12:08
72 lines
4864 bytes
4864 bytes
In article <3f6c3fca$0$59340$e4fe514c@dreader8.news.xs4all.nl>, Ramon Smits wrote: > Marco van de Voort wrote: > >>>Dat zeg ik ook niet :). It's all about design. Waarom een object continu >>>creeeren en destroyen als je weet dat je die actie per uur 1 miljoen >>>maal moet doen. Dan is het nuttig dergelijke objecten te cachen. Maar >>>dat is eigenlijk altijd al geweest. >> >> Als ze in een freelist zitten voor een bepaalde grootte, zijn ze al >> gecollect. Dus gecachete allocaties tellen niet mee in je applicatie >> geheugen gebruik. (tenzij je VM/heapmanager ze niet freed als de memory >> low watermark gehaald wordt ) > > Wat is een freelist? Een lijst van alle recources waar geen references > vanuit de applicatie meer staan? Een lijst met gedealloceerde (GC of handmatig) geheugen bereiken. Meestal van een bepaalde grootte categorie. Soms zijn ze meervoudig gesorteerd. (op grote en op volgorde, sorteren op volgorde maakt mergen van aansluitende blokken makkelijker) Dit om compacting en merging makkelijker te maken. De freelist zijn dus gecachte stukjes geheugen, geen echte objecten meer. (al kan dat als optimalisatie evt in sommige talen toegevoegd worden) > Inderdaad... de tresshold bepaald wanneer de garbage collector gaan > handelen. Maar dan moet inderdaad wel die tresshold behaald worden > tijdens het draaien van de betreffende applicatie. Mijn punt was dat geheugen dat nog niet geGCed is, niet hergebruikt wordt. Ik reageerde op die opmerking over "geheugen cachen", maar ik zie nu dat jij dat misschien "handmatig' (zelf) cachen heb bedoeld, terwijl ik caching in the memorymanager van de taal bedoelde. >> Maar de vertraging die uitswappen kost tijdens gewoon werken (en b.v. eens >> in de 10/20 minuten switches) is IMHO ook al fout, dat werkt al niet lekker >> meer als ie dan 10 seconden gaat trashen, om even iets in de documentatie >> te cut and pasten. > > Inderdaad.. dat is ook vrij irritant. Garbage collecten wil je ook op > die momenten doen zodra de betreffende applicatie idle is. Dat doet de > VM in Java en .NET maar een C++ applicatie heeft dergelijke > functionaliteit vaak niet omdat het een hels karwij is. Ik weet dat het onder delphi vermoedelijk wel kan, en van C++ ben ik ook redelijk zeker. Al valt dat dan onder de non-cooperative languages. waar je dus in de GC geen gealloceert geheugen kan laten verplaatsen, hetgeen tot fragmentatie. Maar mark en sweep zijn universeel, en een thread en event driven applicaties bestaan in die beide talen ook. > De gebruiker merkt vaak deze opschoon acties dan ook vaak helemaal niet in > Java en .NET. Het enige wat de gebruiker merkt is het jit compileren van > de code. Ik weet dat niet. Er waren vroeger veel problemen mee, maar ik weet niet of deze opgelost zijn door nieuwere, betere VMs, of door zwaardere machines met meer geheugen (en dat dan ook relatief tot de last). > Maar zolang systeem geheugen nog riant beschikbaar is is garbage > collecten nog helemaal niet nodig. Dat is wat ik duidelijk probeer te > maken. De .NET VM zal dat dan ook niet snel doen. > >> De applicaties die genoemd werden zijn allemaal interactief. Voor slapende >> services kan ik het me nog voorstellen. > > Wat kun je je voorstellen? Dat die idle zijn? Interactieve applicatie > zijn ook net zo vaak idle. Dat uitswappen niet problematisch is. Voor een applicatie die weinig gebruikt wordt, maar toch regelmatig (iedere zoveel minuten b.v.) kan het erg irritant zijn.
Technical Details
Message-ID:
<slrnbmogpi.11q1.marcov@toad.stack.nl>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!news.tele.dk!news.tele.dk!small.news.tele.dk!news.mailgate.org!surfnet.nl!news.tue.nl!not-for-mailReferences:
<bkecq3$11sg$1@nl-news.euro.net> <1063971705.136647@seven.kulnet.kuleuven.ac.be> <3f6b8a0a$0$197$e4fe514c@dreader3.news.xs4all.nl> <bkh1nn$g66$1@news2.tilbu1.nb.home.nl> <3f6c1dd6$0$135$e4fe514c@dreader4.news.xs4all.nl> <slrnbmo8qj.dt1.marcov@toad.stack.nl> <3f6c3fca$0$59340$e4fe514c@dreader8.news.xs4all.nl>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: 107324,99e0602d9fb9d25e X-Google-Attributes: gid107324,public X-Google-Thread: fcea4,99e0602d9fb9d25e X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2003-09-20 05:08:30 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!news.tele.dk!news.tele.dk!small.news.tele.dk!news.mailgate.org!surfnet.nl!news.tue.nl!not-for-mail From: Marco van de Voort <marcov@stack.nl> Newsgroups: nl.comp.programmeren,be.comp.programming Subject: Re: C# garbage collector Date: Sat, 20 Sep 2003 12:08:18 +0000 (UTC) Organization: Eindhoven University of Technology, The Netherlands Lines: 72 Message-ID: <slrnbmogpi.11q1.marcov@toad.stack.nl> References: <bkecq3$11sg$1@nl-news.euro.net> <1063971705.136647@seven.kulnet.kuleuven.ac.be> <3f6b8a0a$0$197$e4fe514c@dreader3.news.xs4all.nl> <bkh1nn$g66$1@news2.tilbu1.nb.home.nl> <3f6c1dd6$0$135$e4fe514c@dreader4.news.xs4all.nl> <slrnbmo8qj.dt1.marcov@toad.stack.nl> <3f6c3fca$0$59340$e4fe514c@dreader8.news.xs4all.nl> NNTP-Posting-Host: toad.stack.nl X-Trace: news.tue.nl 1064059698 10144 131.155.140.135 (20 Sep 2003 12:08:18 GMT) X-Complaints-To: abuse@tue.nl NNTP-Posting-Date: Sat, 20 Sep 2003 12:08:18 +0000 (UTC) User-Agent: slrn/0.9.7.4 (FreeBSD)