From: Robert Klemme Date: 2008-03-22T21:29:52+09:00 Subject: Re: object destruction On 22.03.2008 03:49, Joey Marino wrote: > [Note: parts of this message were removed to make it a legal post.] > > I have a list of objects and after each initialization a few methods are > called on them. They are inherently different but perform the same tasks on > a different set of data. These tasks require ALOT of memory. After the > object has performed its tasks on the data, it is no longer needed and can > be destroyed. This way, its memory space can be used for the next object. I > am having difficulty destroying these objects since there is no destructor You do not need to destroy objects explicitly - GC will take care. It's more important to make sure all resources (such as file handles) are released and you do not hold longer onto your instances than needed. > capability in ruby that I can find. I have tried using the garbage collector > like follows: > > ------------------------------------------------- > include GC > GC.enable > GC.starto > > obj = Object1.new > obj.method > obj.finalize > > ObjectSpace.garbage_collect > > obj2 - Object2.new > obj2.method > obj.finalize > > ObjectSpace.garbage_collect > > #################### > > class Object > def initialize > ObjectSpace.define_finalizer(self,self.finalize) > end > > def finalize > proc{ |id| puts "finalizing #{id}" } > end > end The code above does not work as intended as Ara has pointed out. > I am assuming this does not destroy the objects since there is no output and > memory is not released. I am not even getting output of a finalized object > at the end of runtime. > Am I doing something wrong or just missing out a key concept here? Yes, see above. Kind regards robert