A People's History of the Ruby Garbage Collector
Ruby GC from 1.8 until 2.4 and beyond!
C Ruby's garbage collector has come a long way since the good old days of Ruby 1.8. We'll walk through over 20 years of GC history in the C Ruby runtime, and along the way we'll talk about the key features that were added with each Ruby version. We'll cover the 5 (!) different GC algorithms C Ruby has used since 1.8, copy-on-write optimization, and possible optimizations for the future. No prior knowledge of GC or the C Ruby runtime is required for this talk.
By covering the long and varied history of Ruby GC, this talk ends up being a general introduction and discussion of concepts in garbage collection in high-level languages. We'll cover the 5 different algorithms Ruby has used, copy-on-write optimization, and how the Ruby C API has sometimes held back garbage collection in the runtime. I'm aiming this talk at people who have never thought about such topics before, but have a few years of Ruby experience under their belt.
I have been debugging and writing about issues in Ruby memory usage for some time now, and I think we could all benefit from plugging up this "leaky abstraction" in our Ruby knowledge.