End of Life Ruby 3.2 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →
GC.stat
# File tmp/rubies/ruby-3.2.0/gc.rb, line 183
def self.stat hash_or_key = nil
Primitive.gc_stat hash_or_key
end
Returns a Hash containing information about the GC.
The contents of the hash are implementation specific and may change in the future without notice.
The hash includes information about internal statistics about GC such as:
- count
-
The total number of garbage collections ran since application start (count includes both minor and major garbage collections)
- time
-
The total time spent in garbage collections (in milliseconds)
- heap_allocated_pages
-
The total number of
:heap_eden_pages+:heap_tomb_pages - heap_sorted_length
-
The number of pages that can fit into the buffer that holds references to all pages
- heap_allocatable_pages
-
The total number of pages the application could allocate without additional GC
- heap_available_slots
-
The total number of slots in all
:heap_allocated_pages - heap_live_slots
-
The total number of slots which contain live objects
- heap_free_slots
-
The total number of slots which do not contain live objects
- heap_final_slots
-
The total number of slots with pending finalizers to be run
- heap_marked_slots
-
The total number of objects marked in the last GC
- heap_eden_pages
-
The total number of pages which contain at least one live slot
- heap_tomb_pages
-
The total number of pages which do not contain any live slots
- total_allocated_pages
-
The cumulative number of pages allocated since application start
- total_freed_pages
-
The cumulative number of pages freed since application start
- total_allocated_objects
-
The cumulative number of objects allocated since application start
- total_freed_objects
-
The cumulative number of objects freed since application start
- malloc_increase_bytes
-
Amount of memory allocated on the heap for objects. Decreased by any GC
- malloc_increase_bytes_limit
-
When
:malloc_increase_bytescrosses this limit, GC is triggered - minor_gc_count
-
The total number of minor garbage collections run since process start
- major_gc_count
-
The total number of major garbage collections run since process start
- compact_count
-
The total number of compactions run since process start
- read_barrier_faults
-
The total number of times the read barrier was triggered during compaction
- total_moved_objects
-
The total number of objects compaction has moved
- remembered_wb_unprotected_objects
-
The total number of objects without write barriers
- remembered_wb_unprotected_objects_limit
-
When
:remembered_wb_unprotected_objectscrosses this limit, major GC is triggered - old_objects
-
Number of live, old objects which have survived at least 3 garbage collections
- old_objects_limit
-
When
:old_objectscrosses this limit, major GC is triggered - oldmalloc_increase_bytes
-
Amount of memory allocated on the heap for objects. Decreased by major GC
- oldmalloc_increase_bytes_limit
-
When
:old_malloc_increase_bytescrosses this limit, major GC is triggered
If the optional argument, hash, is given, it is overwritten and returned. This is intended to avoid probe effect.
This method is only expected to work on CRuby.
Ruby version changes
-
3.1
-
“GC.measure_total_time = true” enables the measurement of
GC. Measurement can introduce overhead. It is enabled by default.GC.measure_total_timereturns the current setting.GC.stat[:time] orGC.stat(:time) returns measured time in milli-seconds. [[Feature #10917]]
-