On Fri, 2003-08-01 at 13:58, Jonathan Pryor wrote:
> <snip/>
> > A question: could really happen that a finalizer is never called?
> > If so, how would managed resources be released?
> 
> Is it possible for finalizers to never be called?  Yes.  Why?  Because
> of this:
> 
>       class BadClass {
>               ~BadClass () {
>                       System.GC.ReRegisterForFinalize (this);
>               }
>       }
> 
> This class will never finalize, because every time the GC attempts to
> finalize the class, it requests that it be kept alive.
> 
> The basic idea is that the GC keeps track of how many objects need to be
> finalized.  During process shutdown, as long as this number is
> declining, finalizers will continue to be run.  If this number stops
> declining before reaching 0 (which would occur with the class above),
> finalizers stop being executed, just so that the process can be shut
> down within a reasonable timeframe.
> 
> Additionally, finalizers are run on a different thread, so that if a
> finalizer never terminates (e.g. "while (true) {}"), the finalizer
> thread can be terminated, allowing the process to shut down in an
> orderly fashion.
> 
> It's unlikely that either of these situations will occur, but they need
> to be taken into consideration.  Most of the time, finalizers should
> always be run.  I would consider failure to do so to be a bug in the
> runtime.

Yes. That's exactly what I wanted to hear... In well designed classes
finalizers should always be run.

Thanks,
Gius_.

> 
>  - Jon
> 
> 
> _______________________________________________
> Mono-list maillist  -  [EMAIL PROTECTED]
> http://lists.ximian.com/mailman/listinfo/mono-list
-- 
----------------------------------------
Giuseppe Greco

::agamura::

phone:  +41 (0)91 604 67 65
mobile: +41 (0)76 390 60 32
email:  [EMAIL PROTECTED]
web:    www.agamura.com
----------------------------------------

_______________________________________________
Mono-list maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to