On 24-05-2012 15:38, Steven Schveighoffer wrote:
On Thu, 24 May 2012 08:54:45 -0400, Peter Alexander
<peter.alexander...@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).
This shouldn't just be an implementation detail IMO. It should be a
documented feature.
-Steve
--
Alex Rønne Petersen
a...@lycus.org
http://lycus.org