class Instana::Backend::GCSnapshot

Keeps track of garbage collector related metrics @since 1.197.0

Public Class Methods

new() click to toggle source
# File lib/instana/backend/gc_snapshot.rb, line 13
def initialize
  ::GC::Profiler.enable

  @last_major_count = 0
  @last_minor_count = 0
end

Public Instance Methods

report() click to toggle source
# File lib/instana/backend/gc_snapshot.rb, line 20
def report
  stats = ::GC.stat
  total_time = ::GC::Profiler.total_time * 1000

  ::GC::Profiler.clear

  payload = {
    totalTime: total_time,
    heap_live: stats[:heap_live_slots] || stats[:heap_live_num],
    heap_free: stats[:heap_free_slots] || stats[:heap_free_num],
    minorGcs: stats[:minor_gc_count] - @last_minor_count,
    majorGcs: stats[:major_gc_count] - @last_major_count
  }

  @last_major_count = stats[:major_gc_count]
  @last_minor_count = stats[:minor_gc_count]

  payload
end