Destructor nonsense on dlang.org

Steven Schveighoffer schveiguy at yahoo.com
Thu May 24 06:38:01 PDT 2012


On Thu, 24 May 2012 08:54:45 -0400, Peter Alexander  
<peter.alexander.au at gmail.com> wrote:

> On Thursday, 24 May 2012 at 12:21:02 UTC, Alex Rønne Petersen wrote:
>> Hi,
>>
>> http://dlang.org/class.html#Destructor
>>
>> "The garbage collector is not guaranteed to run the destructor for all  
>> unreferenced objects."
>>
>> What the *hell*? So resources are allowed to arbitrarily leak and the  
>> programmer has to actually expect this to happen?
>>
>> I really, really hope that this is a documentation error or early  
>> design decision that has since been rectified but with lack of  
>> documentation updates.
>
> I'm pretty sure it's the same in Java.
>
> Finalizers (a.k.a. class destructors) are practically useless.

 From Java spec:

"The Java programming language does not specify how soon a finalizer will  
be invoked, except to say that it will happen before the storage for the  
object is reused"

So yeah, there is no guarantee when a finalizer will be invoked.

However, I'd tend to believe Java implementations will attempt to invoke  
all finalizers of objects left on the heap at program shutdown.

I think D is the same too, as long as termination is normal (i.e. not from  
throwing an Error).

-Steve


More information about the Digitalmars-d mailing list