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 9565gc_constants
-
OPTS =
# File 'gc.c', line 9629opts = rb_ary_new()
Class Attribute Summary
-
.stress ⇒ Boolean
rw
Returns current status of
GC
stress mode. -
.stress=(flag) ⇒ flag
rw
Updates the
GC
stress mode.
Class Method Summary
- .add_stress_to_class(*args)
-
.count ⇒ Integer
The number of times
GC
occurred. -
.disable ⇒ Boolean
Disables garbage collection, returning
true
if garbage collection was already disabled. -
.enable ⇒ Boolean
Enables garbage collection, returning
true
if 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.
- .remove_stress_to_class(*args)
-
.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
-
#start ⇒ 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 an integer bit-ORed following flags.
0x01:: no major GC
0x02:: no immediate sweep
0x04:: full mark after malloc/calloc/realloc
Class Method Details
.add_stress_to_class(*args)
.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 #=> false
Returns 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
.
.remove_stress_to_class(*args)
#start ⇒ nil
ObjectSpace.garbage_collect ⇒ nil
#include(GC; garbage_collect) ⇒ nil
#start(full_mark: true, immediate_sweep: true) ⇒ nil
ObjectSpace.garbage_collect(full_mark: true, immediate_sweep: true) ⇒ nil
#include(GC; garbage_collect(full_mark: true, immediate_sweep: true) ⇒ nil
Also known as: #garbage_collect
nil
ObjectSpace.garbage_collect ⇒ nil
#include(GC; garbage_collect) ⇒ nil
#start(full_mark: true, immediate_sweep: true) ⇒ nil
ObjectSpace.garbage_collect(full_mark: true, immediate_sweep: true) ⇒ nil
#include(GC; 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); end
Use 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_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
ObjectSpace.garbage_collect ⇒ nil
#include(GC; garbage_collect) ⇒ nil
#start(full_mark: true, immediate_sweep: true) ⇒ nil
ObjectSpace.garbage_collect(full_mark: true, immediate_sweep: true) ⇒ nil
#include(GC; garbage_collect(full_mark: true, immediate_sweep: true) ⇒ nil
nil
ObjectSpace.garbage_collect ⇒ nil
#include(GC; garbage_collect) ⇒ nil
#start(full_mark: true, immediate_sweep: true) ⇒ nil
ObjectSpace.garbage_collect(full_mark: true, immediate_sweep: true) ⇒ nil
#include(GC; garbage_collect(full_mark: true, immediate_sweep: true) ⇒ nil
Alias for .start.