Class: Vernier::Collector::RetainedCollector

Inherits:
Collector
  • Object
show all
Defined in:
lib/vernier/collector.rb

Instance Method Summary collapse

Constructor Details

#initialize(mode, options) ⇒ RetainedCollector

Returns a new instance of RetainedCollector.



49
50
51
52
53
54
55
# File 'lib/vernier/collector.rb', line 49

def initialize(mode, options)
  @stack_table = StackTable.new
  @heap_tracker = HeapTracker.new(@stack_table)

  @started_at = Process.clock_gettime(Process::CLOCK_MONOTONIC, :nanosecond)
  super
end

Instance Method Details

#drainObject



61
62
63
# File 'lib/vernier/collector.rb', line 61

def drain
  @heap_tracker.drain
end

#finishObject



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/vernier/collector.rb', line 65

def finish
  @heap_tracker.drain

  GC.start

  @stack_table.finalize

  GC.start

  @heap_tracker.lock
  tracker_data = @heap_tracker.data

  samples = tracker_data.fetch(:samples)
  weights = tracker_data.fetch(:weights)

  result = Result.new
  result.instance_variable_set(:@threads, {
    0 => {
      tid: 0,
      is_main: true,
      name: "retained memory",
      started_at: @started_at,
      samples: samples,
      weights: weights,
      sample_categories: [0] * samples.size,
    }
  })
  result.instance_variable_set(:@meta, {
    started_at: @started_at
  })
  result
end

#startObject



57
58
59
# File 'lib/vernier/collector.rb', line 57

def start
  @heap_tracker.collect
end