Memory bloat in Ruby happens when someone loads a lot of data to the memory. Ruby Virtual Machine does not return most of the allocated memory to the operating system even after data is collected as a garbage. It’s not a big deal for local development or console programs, but if you have a bloat in the big Rails app it might cost you a lot of money.
It is quite easy to find a fix memory bloat when it happens, but can we prevent it?
Java does use string interning for constants. It can help in any case when you have a lot of instances of the same string (and when you need to compare that strings)
BTW, a good technique for catching those kinds of mistakes is to read the piece out loud. Engaging more of your nervous system makes the visual elision easier to detect.
Great post! By the way, the reason why ar_lazy_preload exists is that neither me nor anyone else around me heard about goldiloader at the moment when ar_lazy_preload was created
It is quite easy to find a fix memory bloat when it happens, but can we prevent it?