Skip to content
This repository has been archived by the owner on Feb 6, 2023. It is now read-only.
/ gctrack Public archive
forked from csfrancis/gctrack

The GCTrack extension lets you monitor incremental GC information

License

Notifications You must be signed in to change notification settings

Shopify/gctrack

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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)

About

The GCTrack extension lets you monitor incremental GC information

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 66.2%
  • Ruby 33.8%