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

count → Integer click to toggle source

The number of times GC occured.

It returns the number of times GC occured since the process started.

 
               static VALUE
gc_count(VALUE self)
{
    return UINT2NUM((&rb_objspace)->count);
}
            
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(void)
{
    rb_objspace_t *objspace = &rb_objspace;
    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(void)
{
    rb_objspace_t *objspace = &rb_objspace;
    int old = dont_gc;

    dont_gc = Qfalse;
    return old;
}
            
malloc_allocated_size → Integer click to toggle source

The allocated size by malloc().

It returns the allocated size by malloc().

 
               static VALUE
gc_malloc_allocated_size(VALUE self)
{
    return UINT2NUM((&rb_objspace)->malloc_params.allocated_size);
}
            
malloc_allocations → Integer click to toggle source

The number of allocated memory object by malloc().

It returns the number of allocated memory object by malloc().

 
               static VALUE
gc_malloc_allocations(VALUE self)
{
    return UINT2NUM((&rb_objspace)->malloc_params.allocations);
}
            
start => nil click to toggle source

Initiates garbage collection, unless manually disabled.

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

returns current status of GC stress mode.

 
               static VALUE
gc_stress_get(VALUE self)
{
    rb_objspace_t *objspace = &rb_objspace;
    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(VALUE self, VALUE bool)
{
    rb_objspace_t *objspace = &rb_objspace;
    rb_secure(2);
    ruby_gc_stress = RTEST(bool);
    return bool;
}
            

Public Instance Methods

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

Initiates garbage collection, unless manually disabled.

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