Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
class MemoryProfiler def initialize(method_name) @object_ids = [] @leaked_objects = [] @methodlog = "#{method_name}_profile.log" end def start GC.start ObjectSpace.each_object do |o| @object_ids << o.object_id end end def end GC.start ObjectSpace.each_object do |o| @leaked_objects << o.object_id end @leaked_objects = @leaked_objects - @object_ids puts "Oops..You've got #{@leaked_objects.size} screwed up objects!!" unless @leaked_objects.empty? File.open(@methodlog,'w') do |f| @leaked_objects.each do |o| begin f.puts ObjectSpace._id2ref(o).inspect rescue Exception => e puts "Something wrong happened while processing object #{o}" end end end end end class << self def leaker begin puts"hello" x = 1 nil end end end mp = MemoryProfiler.new("leaker") mp.start leaker mp.end
This paste will be private.
From the Design Piracy series on my blog: