Module: GC
Overview
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.
You may obtain information about the operation of the GC through Profiler.
Constant Summary
- 
    INTERNAL_CONSTANTS =
    
 # File 'gc.c', line 8848gc_constants
- 
    OPTS =
    
 # File 'gc.c', line 8907opts = rb_ary_new() 
Class Attribute Summary
- 
    
      .stress  ⇒ Boolean 
    
    rw
    Returns current status of GCstress mode.
- 
    
      .stress=(flag)  ⇒ flag 
    
    rw
    Updates the GCstress mode.
Class Method Summary
- 
    
      .count  ⇒ Integer 
    
    The number of times GCoccurred.
- 
    
      .disable  ⇒ Boolean 
    
    Disables garbage collection, returning trueif garbage collection was already disabled.
- 
    
      .enable  ⇒ Boolean 
    
    Enables garbage collection, returning trueif garbage collection was previously disabled.
- 
    
      .latest_gc_info  ⇒ GC 
    
    Returns information about the most recent garbage collection. 
- 
    
      .malloc_allocated_size  ⇒ Integer 
    
    Returns the size of memory allocated by malloc(). 
- 
    
      .malloc_allocations  ⇒ Integer 
    
    Returns the number of malloc() allocations. 
- 
    
      .start  ⇒ nil 
      (also: #garbage_collect)
    
    Initiates garbage collection, unless manually disabled. 
- 
    
      .stat  ⇒ Hash 
    
    Returns a ::Hash containing information about the GC.
- 
    
      .verify_internal_consistency  ⇒ nil 
    
    Verify internal consistency. 
Instance Method Summary
- 
    
      #garbage_collect  ⇒ nil 
    
    Alias for .start. 
Class Attribute Details
    .stress  ⇒ Boolean  (rw)  
Returns current status of GC stress mode.
    .stress=(flag)  ⇒ flag  (rw)  
Updates the GC stress mode.
When stress mode is enabled, the GC is invoked at every GC opportunity: all memory and object allocations.
Enabling stress mode will degrade performance, it is only for debugging.
flag can be true, false, or a fixnum bit-ORed following flags.
0x01:: no major GC
0x02:: no immediate sweep
0x04:: full mark after malloc/calloc/reallocClass Method Details
.count ⇒ Integer
The number of times GC occurred.
It returns the number of times GC occurred since the process started.
    .disable  ⇒ Boolean   
Disables garbage collection, returning true if garbage collection was already disabled.
GC.disable   #=> false
GC.disable   #=> true
    .enable  ⇒ Boolean   
Enables garbage collection, returning true if garbage collection was previously disabled.
GC.disable   #=> false
GC.enable    #=> true
GC.enable    #=> falseReturns information about the most recent garbage collection.
.malloc_allocated_size ⇒ Integer
Returns the size of memory allocated by malloc().
Only available if ruby was built with CALC_EXACT_MALLOC_SIZE.
.malloc_allocations ⇒ Integer
Returns the number of malloc() allocations.
Only available if ruby was built with CALC_EXACT_MALLOC_SIZE.
    
      #start  ⇒ nil 
      #garbage_collect  ⇒ nil 
      #start(full_mark: true, immediate_sweep: true)  ⇒ nil 
      #garbage_collect(full_mark: true, immediate_sweep: true)  ⇒ nil 
    
    Also known as: #garbage_collect
  
nil 
      #garbage_collect  ⇒ nil 
      #start(full_mark: true, immediate_sweep: true)  ⇒ nil 
      #garbage_collect(full_mark: true, immediate_sweep: true)  ⇒ nil 
    Initiates garbage collection, unless manually disabled.
This method is defined with keyword arguments that default to true:
def GC.start(full_mark: true, immediate_sweep: true); endUse full_mark: false to perform a minor GC. Use immediate_sweep: false to defer sweeping (use lazy sweep).
Note: These keyword arguments are implementation and version dependent. They are not guaranteed to be future-compatible, and may be ignored if the underlying implementation does not support them.
Returns a ::Hash containing information about the GC.
The hash includes information about internal statistics about GC such as:
{
    :count=>0,
    :heap_allocated_pages=>24,
    :heap_sorted_length=>24,
    :heap_allocatable_pages=>0,
    :heap_available_slots=>9783,
    :heap_live_slots=>7713,
    :heap_free_slots=>2070,
    :heap_final_slots=>0,
    :heap_marked_slots=>0,
    :heap_swept_slots=>0,
    :heap_eden_pages=>24,
    :heap_tomb_pages=>0,
    :total_allocated_pages=>24,
    :total_freed_pages=>0,
    :total_allocated_objects=>7796,
    :total_freed_objects=>83,
    :malloc_increase_bytes=>2389312,
    :malloc_increase_bytes_limit=>16777216,
    :minor_gc_count=>0,
    :major_gc_count=>0,
    :remembered_wb_unprotected_objects=>0,
    :remembered_wb_unprotected_objects_limit=>0,
    :old_objects=>0,
    :old_objects_limit=>0,
    :oldmalloc_increase_bytes=>2389760,
    :oldmalloc_increase_bytes_limit=>16777216
}The contents of the hash are implementation specific and may be changed in the future.
This method is only expected to work on C Ruby.
    .verify_internal_consistency  ⇒ nil   
Verify internal consistency.
This method is implementation specific. Now this method checks generational consistency if RGenGC is supported.
Instance Method Details
    
      #start  ⇒ nil 
      #garbage_collect  ⇒ nil 
      #start(full_mark: true, immediate_sweep: true)  ⇒ nil 
      #garbage_collect(full_mark: true, immediate_sweep: true)  ⇒ nil 
    
  
nil 
      #garbage_collect  ⇒ nil 
      #start(full_mark: true, immediate_sweep: true)  ⇒ nil 
      #garbage_collect(full_mark: true, immediate_sweep: true)  ⇒ nil 
    Alias for .start.