Class: MemoryTracker::MemoryTracker
- Inherits:
-
Object
- Object
- MemoryTracker::MemoryTracker
- Includes:
- Enumerable, Singleton
- Defined in:
- lib/memory_tracker/memory_tracker.rb
Instance Attribute Summary collapse
-
#gcstat_logger ⇒ Object
Returns the value of attribute gcstat_logger.
Class Method Summary collapse
Instance Method Summary collapse
- #add_store(store) ⇒ Object
- #end_request ⇒ Object
- #start_request(env) ⇒ Object
- #stats(store_name) ⇒ Object
- #stores ⇒ Object
- #track_block(name, &block) ⇒ Object
Instance Attribute Details
#gcstat_logger ⇒ Object
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_request ⇒ Object
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 |
#stores ⇒ Object
8 9 10 |
# File 'lib/memory_tracker/memory_tracker.rb', line 8 def stores @stores ||= {} end |
#track_block(name, &block) ⇒ Object
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 |