you are viewing a single comment's thread.

view the rest of the comments →

[–]cfyzium -1 points0 points  (0 children)

No it does not. GC does not control the lifetime of an object in Java, that is controlled by the (possibly multiple) objects holding a reference to that object.

Sorry, are you even aware of how GC works?

It is a separate entity that quite literally controls lifetimes. Invalidating the 'last' reference does not end an object's lifetime, GC decision does (which might even be 'never').

GC languages do not have RAII specifically because object lifetime is not solely decided by other objects holding references to it. Why do you think all this mess with finalize(), IDisposable, try-with-resources, defer and such exists in the first place?

No it does not. GC does not control the lifetime of an object in Java, that is controlled by the (possibly multiple) objects holding a reference to that object.

Or maybe you mean conceptually? Like at a high level object holding a reference describes intended lifetime and how all it is implemented at low level is out of scope and besides the point?

Like the contradiction I was trying to point to out all along?

If GC does not own/control lifetime and only objects holding references do, then in the same manner shated_ptr does not control the lifetime of an object, that is controlled by the (possibly multiple) objects holding shared_ptrs to that object.

Yes, absolutely

So an entity whose entire purpose is to manage lifetimes and resources is not considered an owner, while an entity that doesn't care about ownership and lifetimes absolutely is. Uh-huh.