In this talk from RubyFringe, Tom Preston-Werner, one of the founders of GitHub, talks about "Conceptual Algorithms".
Tom walks us through a problem he encountered while writing the god tool. The Ruby process running god was leaking memory - for no obvious reason. Tom explains how he methodically explored the problem and tracked down the source of the problem. (Spoiler: it was a sneaky problem in the Ruby interpreter).
Tom finishes up by explaining his reasons to chose projects, and what he considers the "deathbed filter".
Watch Tom Preston-Werner on "Conceptual Algorithms".
InfoQ Homepage News Presentation: Conceptual Algorithms
Community comments
Entertaining talk
by Markus Kohler,
Re: Entertaining talk
by Werner Schuster,
Re: Entertaining talk
by Markus Kohler,
Wau!!!
by Jure Srsen,
Entertaining talk
by Markus Kohler,
Your message is awaiting moderation. Thank you for participating in the discussion.
It's a little bit shocking how difficult it is in Ruby to analyze memory leaks.
Analyzing memory leaks is easy in Java (Eclipse Memory Analyzer).
Analyzing memory usage is much more difficult, but still can be done with MAT. Check my blogs posts
Re: Entertaining talk
by Werner Schuster,
Your message is awaiting moderation. Thank you for participating in the discussion.
I'm not so sure - the memory leak Tom's talking about is a leak in the Ruby interpreter not an application leak.
There are a bunch of leaks - although recently a fix for many of them was found:
www.infoq.com/news/2009/01/ruby-patches-fix-leaks
(turns out it was naughty GCC + the conservative Ruby GC).
For the nice kind of memory leak (the self-inflicted one in user code) Ruby doesn't need outside tools since it can look at the objects in the heap and iterate over the reachable ones. Eg here's a simple homegrown profiler using ObjectSpace:
scottstuff.net/blog/articles/2006/08/17/memory-...
Obviously - you'll still need some of the algorithms for analyzing the object graph and figuring out what might be a memory leak or not, and tools like MAT have these of course.
Wau!!!
by Jure Srsen,
Your message is awaiting moderation. Thank you for participating in the discussion.
Thanks a lot for this presentation, Tom!
I would listen to audio versions of this in a regular podcast :)
Jure Sršen
Re: Entertaining talk
by Markus Kohler,
Your message is awaiting moderation. Thank you for participating in the discussion.
Sure that was a leak caused by the GC not working correctly.
I never heard of such a bug in the JVM GC within the last 9 years.
You typically need an external tool, because if you don't have enough memory anymore you cannot use additional memory within the same process.