Class: Instana::Collectors::GC
- Inherits:
-
Object
- Object
- Instana::Collectors::GC
- Defined in:
- lib/instana/collectors/gc.rb
Instance Attribute Summary collapse
-
#payload_key ⇒ Object
Returns the value of attribute payload_key.
Instance Method Summary collapse
-
#collect ⇒ Object
collect.
-
#initialize ⇒ GC
constructor
A new instance of GC.
Constructor Details
#initialize ⇒ GC
Returns a new instance of GC.
6 7 8 9 10 11 12 |
# File 'lib/instana/collectors/gc.rb', line 6 def initialize @payload_key = :gc @this_gc = {} @last_major_count = 0 @last_minor_count = 0 ::GC::Profiler.enable end |
Instance Attribute Details
#payload_key ⇒ Object
Returns the value of attribute payload_key.
4 5 6 |
# File 'lib/instana/collectors/gc.rb', line 4 def payload_key @payload_key end |
Instance Method Details
#collect ⇒ Object
collect
To collect garbage collector related metrics.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/instana/collectors/gc.rb', line 19 def collect @this_gc.clear stats = ::GC.stat # Time spent in GC. Report in milliseconds @this_gc[:totalTime] = ::GC::Profiler.total_time * 1000 ::GC::Profiler.clear # GC metrics only available on newer Ruby versions if RUBY_VERSION >= '2.1' # GC runs. Calculate how many have occurred since the last call @this_gc[:minorGcs] = stats[:minor_gc_count] - @last_minor_count @this_gc[:majorGcs] = stats[:major_gc_count] - @last_major_count # Store these counts so that we have something to compare to next # time around. @last_major_count = stats[:major_gc_count] @last_minor_count = stats[:minor_gc_count] @this_gc[:heap_live] = stats[:heap_live_slots] || stats[:heap_live_num] @this_gc[:heap_free] = stats[:heap_free_slots] || stats[:heap_free_num] else @this_gc[:heap_live] = stats[:heap_live_slot] || stats[:heap_live_num] @this_gc[:heap_free] = stats[:heap_free_slot] || stats[:heap_free_num] end @this_gc rescue => e ::Instana.logger.info "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.}" ::Instana.logger.debug { e.backtrace.join("\r\n") } end |