Class: RTunnel::LeakTracker
- Inherits:
-
Object
- Object
- RTunnel::LeakTracker
- Defined in:
- lib/rtunnel/leak.rb
Class Method Summary collapse
-
.start ⇒ Object
TODO(not_me): update this to eventmachine if it’s still interesting.
Class Method Details
.start ⇒ Object
TODO(not_me): update this to eventmachine if it’s still interesting
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/rtunnel/leak.rb', line 5 def self.start logged_thread do sleep 10 begin objects = Hash.new 0 while true last_objects = objects.dup ObjectSpace.each_object do |o| objects[o.class] += 1 end objects.reject!{|k,v| ! last_objects.has_key? k } unless last_objects.empty? new_objects = objects.dup objects.each do |(klass, count)| new_objects.delete klass if count < last_objects[klass] # has been GC'ed, "cant be leaking" end objects = new_objects PP.pp objects.sort_by{|(k,cnt)| cnt }.reverse[0..10], STDERR sleep 10 end rescue Object STDERR.puts $!.inspect STDERR.puts $!.backtrace.join("\n") end end end |