Когда переменная выходит из области видимости, кто-нибудь вокруг слышит ее крик?
Это не вопрос рубина, а общий вопрос о сборке мусора. В языке сборки мусора, таком как Ruby или C #, когда переменная выходит из области видимости, она помечается некоторым образом, который говорит, что он больше не используется. Когда это происходит, вы уже не можете этого понять, и он бездельничает, но ему все еще выделяется память.
В какой-то момент сборщик мусора проснется и будет искать переменные, помеченные как неиспользуемые. Он избавится от них, и в этот момент их больше не будет в памяти.
Это может быть более сложным, чем это, в зависимости от того, как работает сборщик мусора, но это достаточно близко:)