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
|
# File 'lib/mongrel/debug.rb', line 65
def ObjectTracker.sample
Class.stopit do
ospace = Set.new
counts = {}
ObjectSpace.each_object do |obj|
if not obj.kind_of? String
ospace << obj.object_id
counts[obj.class] ||= 0
counts[obj.class] += 1
end
end
dead_objects = @active_objects - ospace
new_objects = ospace - @active_objects
live_objects = ospace & @active_objects
MongrelDbg::trace(:objects, "COUNTS: #{dead_objects.length},#{new_objects.length},#{live_objects.length}")
if MongrelDbg::tracing? :objects
top_20 = counts.sort{|a,b| b[1] <=> a[1]}[0..20]
MongrelDbg::trace(:objects,"TOP 20: #{top_20.inspect}")
end
@active_objects = live_objects + new_objects
[@active_objects, top_20]
end
end
|