FWIW, I tracked down the leak--my new route cache wasn't actually
working right, so it was losing 1 string per Article. Fixed :-). I
haven't tested the trunk yet, or any of the admin pages.
Scott
On 8/16/06, Scott Laird <[EMAIL PROTECTED]> wrote:
> I'm doing a bit of memory testing in my 4.1 tree, and I haven't found
> anything all *that* exciting yet. I'm using a objectspace profiler by
> Ryan Davis, lightly modified to produce a bit more info. Two things
> seem obvious:
>
> 1. Cached hits don't leak anything. The total number of objects
> per type in the system doesn't change at all .
>
> 2. Uncached hits leak 1-3 strings per page.
>
> I haven't tested admin yet.
>
> Here's the profiler. Start it from environment.rb and it'll log to a file.
>
>
> class MemoryProfiler
> def self.start(delay=10)
> Thread.new do
> prev = Hash.new(0)
> curr = Hash.new(0)
> delta = Hash.new(0)
>
> file = File.open('log/memory_profiler.log','w')
>
> loop do
> begin
> GC.start
> curr.clear
> ObjectSpace.each_object do |o|
> curr[o.class] += 1 #Marshal.dump(o).size rescue 1
> end
>
> delta.clear
> (curr.keys + delta.keys).uniq.each do |k,v|
> delta[k] = curr[k]-prev[k]
> end
>
> file.puts "Top 20"
> delta.sort_by { |k,v| -v.abs }[0..19].sort_by { |k,v|
> -v}.each do |k,v|
> file.printf "%+5d: %s (%d)\n", v, k.name, curr[k] unless v == 0
> end
> file.flush
>
> delta.clear
> prev.clear
> prev.update curr
> rescue Exception => err
> STDERR.puts "** memory_profiler error: #{err}"
> end
> sleep delay
> end
> end
> end
> end
>
_______________________________________________
Typo-list mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/typo-list