ok I was not sure of how much you were aware of how the GC works :) second try: In your example it would be enough to cut the connection the ship, everything "aboard" will be GC'ed as well. Once you cut the connection to a subgraph of objects, and they are no longer reachable from the outside (root objects) the whole subgraph get's garbage collected. In your example: as soon as nobody references a ship anymore it gets garbage collected, as well as all objects that were only reachable via that ship. clearer? If not I suggest you quickly make your own little example. Note that with #allInstances you can see which objects are still around of a certain class, for instance: Dictionary allInstances On 2013-06-27, at 00:13, Paul DeBruicker <pdebruic@gmail.com> wrote:
In Pharo2 Object (and many other classes) implement #release and #release has many senders. So I don't understand how 'there is no such thing as #release in Pharo'. I understand that the GC is a VM thing and it does not send #release to the objects in the image.
IF in my hypothetical question the Navy object contains an ordered collection of ships, and each ship is referenced in that collection and also by all of its soldiers and jobs, to have my ship GC'd do I only need to remove the reference to the ship in the Navy object (at which point the ship becomes detached and self contained amalgamation of soldiers and jobs) or do I have to have each soldier and job dereference the ship too?
On 06/26/2013 03:05 PM, Camillo Bruni wrote:
There is no such thing as #release in Pharo. If you want your objects to be garbage collected just make sure to remove all references to it. You simply assign nil to instance variables which previously held such and object.
Does that answer your question?
On 2013-06-26, at 23:47, Paul DeBruicker <pdebruic@gmail.com> wrote:
Lets say I'm modeling a navy that is comprised of many ships each with their own soldiers and jobs. If I want one of the ships to be GC'd do I need to implement #release in the soldier and job objects and send it to each of those soldiers and jobs that live and work on the ship I want GC'd or is removing the references between the ship and the navy enough to have the whole ship (including its soldiers and jobs) GC'd?