In Files

  • gc.c

GC

The GC module provides an interface to Ruby's mark and sweep garbage collection mechanism. Some of the underlying methods are also available via the ObjectSpace module.

Public Class Methods

disable => true or false click to toggle source

Disables garbage collection, returning true if garbage collection was already disabled.

GC.disable   #=> false
GC.disable   #=> true
 
               VALUE
rb_gc_disable()
{
    int old = dont_gc;

    dont_gc = Qtrue;
    return old;
}
            
enable => true or false click to toggle source

Enables garbage collection, returning true if garbage collection was previously disabled.

GC.disable   #=> false
GC.enable    #=> true
GC.enable    #=> false
 
               VALUE
rb_gc_enable()
{
    int old = dont_gc;

    dont_gc = Qfalse;
    return old;
}
            
start => nil click to toggle source
garbage_collect => nil
garbage_collect => nil

Initiates garbage collection, unless manually disabled.

 
               VALUE
rb_gc_start()
{
    rb_gc();
    return Qnil;
}
            
stress => true or false click to toggle source

returns current status of GC stress mode.

 
               static VALUE
gc_stress_get(self)
    VALUE self;
{
    return ruby_gc_stress ? Qtrue : Qfalse;
}
            
stress = bool => bool click to toggle source

updates GC stress mode.

When ::stress = true, GC is invoked for all GC opportunity: all memory and object allocation.

Since it makes Ruby very slow, it is only for debugging.

 
               static VALUE
gc_stress_set(self, bool)
    VALUE self, bool;
{
    rb_secure(2);
    ruby_gc_stress = RTEST(bool);
    return bool;
}
            

Public Instance Methods

start => nil click to toggle source
garbage_collect => nil
garbage_collect => nil

Initiates garbage collection, unless manually disabled.

 
               VALUE
rb_gc_start()
{
    rb_gc();
    return Qnil;
}