Class: MemoryTracker::MemoryTracker

Inherits:
Object
  • Object
show all
Includes:
Enumerable, Singleton
Defined in:
lib/memory_tracker/memory_tracker.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#gcstat_loggerObject

Returns the value of attribute gcstat_logger.



6
7
8
# File 'lib/memory_tracker/memory_tracker.rb', line 6

def gcstat_logger
  @gcstat_logger
end

Class Method Details

.track_block(*args) ⇒ Object



32
33
34
# File 'lib/memory_tracker/memory_tracker.rb', line 32

def self.track_block(*args)
  self.instance.track_block(*args)
end

Instance Method Details

#add_store(store) ⇒ Object



12
13
14
# File 'lib/memory_tracker/memory_tracker.rb', line 12

def add_store(store)
  stores[store.name] = store
end

#end_requestObject



20
21
22
23
24
25
26
# File 'lib/memory_tracker/memory_tracker.rb', line 20

def end_request
  return unless @request
  @request.close
  stores.each { |name, store| store.push(@request) }

  @request = nil
end

#start_request(env) ⇒ Object



16
17
18
# File 'lib/memory_tracker/memory_tracker.rb', line 16

def start_request(env)
  @request = Request.new(env)
end

#stats(store_name) ⇒ Object



28
29
30
# File 'lib/memory_tracker/memory_tracker.rb', line 28

def stats(store_name)
  stores[store_name].stats
end

#storesObject



8
9
10
# File 'lib/memory_tracker/memory_tracker.rb', line 8

def stores
  @stores ||= {}
end

#track_block(name, &block) ⇒ Object

Raises:

  • (ArgumentError)


36
37
38
39
40
41
42
43
# File 'lib/memory_tracker/memory_tracker.rb', line 36

def track_block(name, &block)
  raise ArgumentError unless block_given?
  before = GC.stat
  ret = yield
  after = GC.stat
  gcstat_logger.debug "gcstat diff for #{name}: #{GcStat.gcdiff(before, after)}"
  ret
end