[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Are not used Objects cleaned from memory?

Iñaki Baz Castillo

7/13/2008 11:36:00 AM

Hi, a simple question:
If I have an Array containing custom complex objects and I use Array.delete=
or=20
any other function that deletes a element of the Array, will be the deleted=
=20
Object remain in RAM memory? or will it automatically deleted?
Note that the object also contains complex objects as attributes.

Thanks.

=2D-=20
I=C3=B1aki Baz Castillo

4 Answers

Sebastian Hungerecker

7/13/2008 12:54:00 PM

0

I=C3=B1aki Baz Castillo wrote:
> If I have an Array containing custom complex objects and I use Array.dele=
te
> or any other function that deletes a element of the Array, will be the
> deleted Object remain in RAM memory? or will it automatically deleted?

Assuming the object is not referenced in any other way it will be garbage=20
collected.

HTH,
Sebastian

Dave Bass

7/14/2008 2:28:00 PM

0

Sebastian Hungerecker wrote:
> Assuming the object is not referenced in any other way it will be
> garbage
> collected.

Eventually.

AFAIK there is no way to force the garbage collector to operate; this is
in common with most other languages that use garbage collection.
GC.start or GC.enable do not *force* garbage collection to occur.

But I'm by no means an expert, so someone will probably be along in a
minute to tell you about a gem that does just that... or it's already in
v1.9... :-)

Dave


--
Posted via http://www.ruby-....

Michal Suchanek

7/15/2008 2:16:00 PM

0

On 14/07/2008, Dave Bass <davebass@musician.org> wrote:
> Sebastian Hungerecker wrote:
> > Assuming the object is not referenced in any other way it will be
> > garbage
> > collected.
>
>
> Eventually.
>
> AFAIK there is no way to force the garbage collector to operate; this is
> in common with most other languages that use garbage collection.
> GC.start or GC.enable do not *force* garbage collection to occur.
>
> But I'm by no means an expert, so someone will probably be along in a
> minute to tell you about a gem that does just that... or it's already in
> v1.9... :-)
>

There might be some non-obvious references to objects stored in blocks
or elsewhere. When you write a piece of code (such as a block) and
save it somewhere the variables that were visible while writing the
block have to be kept around.

Also from what I have heard the GC works by scanning the memory
(stack, whatever) for things that *look* like object pointers. So if
you have a number (or substring, or ...) that points to an object when
interpreted as a pointer that object would not be deleted even though
it is really not referenced ...

When I created lots of small strings and stuffed them into numerous
hashes and arrays the objects did not go away as I would expect. I
saved a gigabyte or two of ram by using JRuby then - it required about
half the memory in this case ;-)

Thanks

Michal

Marc Heiler

7/16/2008 4:46:00 PM

0

> AFAIK there is no way to force the garbage collector to operate;

Hmm GC.start ?

Or maybe wait until you have 8M used, then it should kick in ... :-)
--
Posted via http://www.ruby-....