Project

gctrack

0.01
Repository is archived
Low commit activity in last 3 years
No release in over a year
This gem can be used to track Ruby GC tracepoints that are normally only visible through GC extensions.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

 Project Readme

Gem Version Build Status

GCTrack

The GCTrack extension lets you monitor incremental Garbage Collector (GC) information, the GC introduced in Ruby v2.2.

Getting started

#1 Add the dependency

GCTrack is published to rubygems.org. Simply add it as a dependency to your Gemfile

gem 'gctrack', '~> 0.1.1'

#2 Enable the extension

require 'gctrack'

GC::Tracker.enable # returns true, if the Tracker is now enabled

#3 Record data

GC::Tracker.start_record # returns true, if a new record was started
# DO ACTUAL WORK
gc_cycles, gc_duration_ns = GC::Tracker.end_record

#end_record will return the gc_cycles (the amount of gc cycles observed) and gc_duration_ns (their cumulative duration in nanoseconds), since the last invocation of #start_record. You can also invoke #start_record recursively as so:

GC::Tracker.start_record # Start a first record 
do_work_on(one)
GC::Tracker.start_record # Start a second record 
do_work_on(two)
inner_data = GC::Tracker.end_record # Collect results from second record
do_work_on(three)
outter_data = GC::Tracker.end_record # Collect results from first record

In this example, the Array inner_data will only contain the GC information resulted of executing do_work_on(two), while outter_data will contain the GC information resulted from the three exectutions: do_work_on one, two and three.

Effectively, records are stacked and data from a GC cycle will be added to all "currently" records.

License

The MIT License (MIT)