Article View: nl.comp.programmeren
Article #471Re: C# garbage collector
From: rick
Date: Fri, 19 Sep 2003 12:56
Date: Fri, 19 Sep 2003 12:56
51 lines
3530 bytes
3530 bytes
>> > Ik had een vraagje. In een C# project (in het compact .NET framework)
>> > vervang ik soms een afbeelding door een andere afbeelding. Ik heb gezien
>> > dat sommige mensen dan eerst dit doen:
>> >
>> > if (image != null)
>> > {
>> > image.Dispose();
>> > image = null;
>> > }
>> >
>> > Is dat nodig? Ik dacht dat C# garbage collection had. Of dient het enkel
>> > om C# een "hint" te geven dat dit object verwijderd kan worden?
>> >
>> > Als het niet nodig is, hoe zit het dan met de complexiteit? Kan ik deze
>> > code beter niet gebruiken of maakt het niet zo zeer uit qua
>complexiteit?
>>
>> Bovenstaande code is (alleen) nuttig als je 'image' niet langer meer
>> gebruikt. Als je aan 'image' direct een andere afbeelding 'hangt', bv :
>>
>> image = mijnAndereImage;
>>
>> dan heeft het geen enkele zin om (eerst) die code uit te voeren,
>> dat gebeurt dan al automatisch ('onder water').
>
>zonder veel te kennen van c# denk ik dat het sturen van de Dispose wel nodig
>is, of in ieder geval netter is, als je het image object niet meer gaat
>gebruiken. Een Image object kan externe resources vasthouden en je weet
>nooit zeker wanneer die gaan gereleased worden als je het niet expliciet
>doet (garbage collection gebeurt wanneer de run time environment ertoe
>beslist, niet wanneer jij het wil). ik heb er geen idee van of de garbage
>collector op het moment van memory reclaim ook nog een dispose doet.
>misschien wel, maar het is niet netjes van externe resources vast te houden.
>en voor hetzelfde geld wordt het stuk geheugen van dat object nooit
>gereclaimed.
Dat is toch precies wat ik zei ? 'Bovenstaande code is (alleen) nuttig als
je 'image' niet langer meer gebruikt. '
Bovendien ging ik daarna nog het ��n en ander wat meer toelichten,
maar net dat stukje tekst heb je in deze reply weggeknipt (...) :
'Maar, zoals gezegd, als je 'image' niet langer meer gebruikt, dan is die
code WEL nuttig, omdat de garbage collector dan 'ziet' dat dit object
opgeruimd kan worden.
Als je dat niet doet en 'image' is een variabele die niet meer 'out of
scope' raakt tijdens het draaien van het programma (het is bv een
class-variabele (member) van een class die voortdurend 'bestaat',
dan zal 'image' geheugen blijven vasthouden omdat de garbage
collector het object niet kan opruimen.'
Technical Details
Message-ID:
<bvulmv8hmij7ul4cf9ph8m5799mmls1b79@4ax.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-09!supernews.com!newshosting.com!news-xfer1.atl.newshosting.com!diablo.voicenet.com!news2.euro.net!postnews1.euro.net!news.wanadoo.nl!not-for-mailReferences:
<bkecq3$11sg$1@nl-news.euro.net> <3vklmvsj3lsprdrvjrplk7rcknecl8f967@4ax.com> <3f6aedc8$0$31737$ba620e4c@reader1.news.skynet.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII 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-19 05:54:12 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-09!supernews.com!newshosting.com!news-xfer1.atl.newshosting.com!diablo.voicenet.com!news2.euro.net!postnews1.euro.net!news.wanadoo.nl!not-for-mail From: rick@nomail.net Newsgroups: nl.comp.programmeren,be.comp.programming Subject: Re: C# garbage collector Date: Fri, 19 Sep 2003 14:56:11 +0200 Message-ID: <bvulmv8hmij7ul4cf9ph8m5799mmls1b79@4ax.com> References: <bkecq3$11sg$1@nl-news.euro.net> <3vklmvsj3lsprdrvjrplk7rcknecl8f967@4ax.com> <3f6aedc8$0$31737$ba620e4c@reader1.news.skynet.be> X-Newsreader: Forte Agent 1.7/32.534 MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Lines: 51 Organization: Wanadoo NNTP-Posting-Date: 19 Sep 2003 12:54:01 GMT NNTP-Posting-Host: ap-w-47d7.adsl.wanadoo.nl X-Trace: 1063976041 willi.euronet.nl 34886 212.129.199.215:47044 X-Complaints-To: abuse@wanadoo.nl