[concurrency-interest] Object finalization
davidcholmes at aapt.net.au
Sun May 13 18:28:26 EDT 2012
The objects referred to by 'a' and 'b' will remain finalizer-reachable until
after the finalizer runs and so can not be reclaimed. If they were to be
reclaimed it would require that all references to them in finalizable
objects be found and cleared, which is not practical.
With regard to the OP, as long as the constructor completes normally, it is
guaranteed that neither 'a' nor 'b' will be null when the finalizer runs.
From: concurrency-interest-bounces at cs.oswego.edu
[mailto:concurrency-interest-bounces at cs.oswego.edu]On Behalf Of Vitaly
Sent: Monday, 14 May 2012 8:20 AM
To: Bob Lee
Cc: concurrency-interest at cs.oswego.edu
Subject: Re: [concurrency-interest] Object finalization
perhaps I'm misremembering but there's no guarantee on the order in which
objects are reclaimed. When SomeService finalizer runs and assuming a and b
were kept alive only by this instance of SomeService, I don't think there's
any guarantee that a and b have not been reclaimed at this point already.
That's how the CLR finalization works, so perhaps I'm conflating the two.
Sent from my phone
On May 13, 2012 5:54 PM, "Bob Lee" <crazybob at crazybob.org> wrote:
On Sun, May 13, 2012 at 2:41 PM, Vitaly Davidovich <vitalyd at gmail.com>
I am unclear whether the original question is specifically about
reachability of a and b from the constructor or whether the constructor was
shown to us to indicate that a and b are never null after construction
(assuming asserts are enabled). If it's the former, your answer is correct
(that's what I meant by saying not sure if your reply was answering the
question). If it's the latter, then I'm pretty sure my response is correct
Again, according the JLS, you're incorrect. "a" and "b" will be non-null
when SomeService.finalize() executes. Why would you think otherwise?
Square is hiring!
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Concurrency-interest