Module GC
In: gc.c

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.

Methods

disable   enable   garbage_collect   start   stress   stress=  

Public Class methods

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

   GC.disable   #=> false
   GC.disable   #=> true

[Source]

/*
 *  call-seq:
 *     GC.disable    => true or false
 *
 *  Disables garbage collection, returning <code>true</code> 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;
}

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

   GC.disable   #=> false
   GC.enable    #=> true
   GC.enable    #=> false

[Source]

/*
 *  call-seq:
 *     GC.enable    => true or false
 *
 *  Enables garbage collection, returning <code>true</code> 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;
}

Initiates garbage collection, unless manually disabled.

[Source]

/*
 *  call-seq:
 *     GC.start                     => nil
 *     gc.garbage_collect           => nil
 *     ObjectSpace.garbage_collect  => nil
 *
 *  Initiates garbage collection, unless manually disabled.
 *
 */

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

returns current status of GC stress mode.

[Source]

/*
 *  call-seq:
 *    GC.stress                 => true or false
 *
 *  returns current status of GC stress mode.
 */

static VALUE
gc_stress_get(self)
    VALUE self;
{
    return ruby_gc_stress ? Qtrue : Qfalse;
}

updates GC stress mode.

When GC.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.

[Source]

/*
 *  call-seq:
 *    GC.stress = bool          => bool
 *
 *  updates GC stress mode.
 *
 *  When GC.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

Initiates garbage collection, unless manually disabled.

[Source]

/*
 *  call-seq:
 *     GC.start                     => nil
 *     gc.garbage_collect           => nil
 *     ObjectSpace.garbage_collect  => nil
 *
 *  Initiates garbage collection, unless manually disabled.
 *
 */

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

[Validate]