[Gc] Re: Do finalizers run at exit?
axilmar at otenet.gr
Sat Dec 29 03:22:22 PST 2007
The question still remains:
Why finalizers are run after a collection and not on program exit?
O/H David Jones έγραψε:
> On Friday 28 December 2007 11:08, Achilleas Margaritis wrote:
>>> Even in Java, with a good generational GC, a
>>> long-running server may have no need to do a full-world collection if the
>>> generational collections are sufficient to provide enough memory to run.
>> That's why you can invoke a manual collection when required.
> In general, that could be a very expensive solution if you have a large heap.
> In addition, a GC may choose not to free objects immediately, so a single GC
> call may not suffice. I think the Boehm GC actually works this way. This
> doesn't mean the GC leaks - it will reclaim all unreachable objects.
>>> And if you do that, you have no need for finalizers, period. At least I
>>> have yet to see a good use of finalizers in a well-designed and correct
>> Then can I assume you have never made a program in which a resource must
>> be shared between its heap-allocated objects!!! :-)
> I have never written a program where an object that is designed to potentially
> become unreachable has held a resource for some period of time. But then
> again, I doubt the correctness of such programs. There are ways to manage
> what appears to be a shared resource without holding low-level resources for
> a long time.
More information about the Gc