Yeah, I meant "in addition to non-public threads", which is a very reasonable filter to apply. But yes, to get threads you need users and characters and icons and then all the associations, etc etc.
Rails 3 does not have proper streaming; all they have is "render layout then render the expensive view". To get proper streaming we have to get to Rails 4, which is part of why I've been writing so many tests; unlike Ruby, major Rails versions are deeply unsafe as an upgrade without good tests. (2 - 3 was the worst I know of, which thankfully we skip, but 3 - 4 won't be fun.)
GC tuning post I like, or
another one that has good explanations of the various tuning variables, but none seem to actually tell the GC tuning how much my concrete upper limit (512 MB total, so 256MB is) is.
The application is not leaking memory, as near as I can tell; it's got reasonably stable memory usage now except for occasional large jumps, which are pretty trivially mapped to memory-intensive requests like per_page=all and view=flat. It's just not returning memory to the OS. WIth Heroku's ephemeral boxes, this manifests as a combination of swap memory usage and Heroku-triggered R14 Out of Memory errors.