[#31647] [Backport #3666] Backport of r26311 (Bug #2587) — Luis Lavena <redmine@...>

Backport #3666: Backport of r26311 (Bug #2587)

13 messages 2010/08/07

[#31666] [Bug #3677] unable to run certain gem binaries' in windows 7 — Roger Pack <redmine@...>

Bug #3677: unable to run certain gem binaries' in windows 7

10 messages 2010/08/10

[#31676] [Backport #3680] Splatting calls to_ary instead of to_a in some cases — Tomas Matousek <redmine@...>

Backport #3680: Splatting calls to_ary instead of to_a in some cases

10 messages 2010/08/11

[#31681] [Bug #3683] getgrnam on computer with NIS group (+)? — Rocky Bernstein <redmine@...>

Bug #3683: getgrnam on computer with NIS group (+)?

13 messages 2010/08/11

[#31843] Garbage Collection Question — Asher <asher@...>

This question is no doubt a function of my own lack of understanding, but I think that asking it will at least help some other folks see what's going on with the internals during garbage collection.

17 messages 2010/08/25
[#31861] Re: Garbage Collection Question — Roger Pack <rogerdpack2@...> 2010/08/26

> The question in short: when an object goes out of scope and has no

[#31862] Re: Garbage Collection Question — Asher <asher@...> 2010/08/26

Right - so how does a pointer ever get off the stack?

[#31873] Re: Garbage Collection Question — Kurt Stephens <ks@...> 2010/08/27

On 8/26/10 11:51 AM, Asher wrote:

[#31894] Re: Garbage Collection Question — Asher <asher@...> 2010/08/27

I very much appreciate the response, and this is helpful in describing the narrative, but it's still a few steps behind my question - but it may very well have clarified some points that help us get there.

[#31896] Re: Garbage Collection Question — Evan Phoenix <evan@...> 2010/08/27

You have introduced something called a "root node" without defining it. What do you mean by this?

[#31885] Avoiding $LOAD_PATH pollution — Eric Hodel <drbrain@...7.net>

Last year Nobu asked me to propose an API for adding an object to

21 messages 2010/08/27

[#31947] not use system for default encoding — Roger Pack <rogerdpack2@...>

It strikes me as a bit "scary" to use system locale settings to

19 messages 2010/08/30

[#31971] Change Ruby's License to BSDL + Ruby's dual license — "NARUSE, Yui" <naruse@...>

Ruby's License will change to BSDL + Ruby's dual license

16 messages 2010/08/31

[ruby-core:31903] Re: Garbage Collection Question

From: Asher <asher@...>
Date: 2010-08-27 18:07:39 UTC
List: ruby-core #31903
It takes place in the Hash::Weak code in []:

class Hash::Weak < Hash
  
  def []( key )

    # get the stored ID - a FixNum, not an object reference to our weak-referenced object
    obj_id = super( key )

    # theoretically this should cause non-referenced objects to get cleaned up 
    # so long as nothing looks like a pointer or reference to it
    ObjectSpace.garbage_collect

    # now get our object from ID
    # if it had no references it should have been GC'd and we should get an 
    # rb_eRangeError "is not id value" (expected) or "is recycled object" (possible)
    obj = ObjectSpace._id2ref( obj_id )

    return obj

  end
  
  def []=( key, object )

    # FixNum have a constant ID for value, so can't be copied and can't be garbage collected
    # so object.__id__ cannot be a reference to a child of object and therefore cannot prevent
    # garbage collection on the object
    super( key, object.__id__ )

  end
  
end

Asher

On Aug 27, 2010, at 2:05 PM, Evan Phoenix wrote:

> Your examples do not include calling GC.start to force a GC, thus I wonder if this is the source of your problem. Remember that by default, the GC runs whenever it wants. So you can't depend on it to run an certain times.
> 
> - Evan


In This Thread