Да, если установить для пользователей значение nil, это действительно уменьшит требуемую память (очень незначительно), но это необязательно, так как сборщик мусора в конечном итоге сместит ее. В работе вы должны предполагать, что ваш процесс Ruby всегда будет расти со временем, и его следует периодически перезапускать, если вы беспокоитесь об управлении памятью. Максимальное уменьшение пространства кучи, которое вы когда-либо увидите в ruby, является минимальным по сравнению с его ростом с течением времени, поэтому я не стал бы беспокоиться о том, чтобы установить для больших коллекций значение nil, чтобы сэкономить несколько байтов здесь и там немного раньше, чем GC мог бы смести это все равно. Ruby размещает объекты в пространстве кучи, которое состоит из страниц кучи. Предполагая, что вы используете Ruby2.1 или лучше, пространство кучи делится на использованную (иначе говоря, Eden) и пустую (иначе говоря, Tomb) страницы кучи. При создании экземпляров объектов ruby сначала ищет свободное место на страницах eden, и только если свободного места нет, он извлекает страницу из гробницы. Когда вы затем перезаписываете объект на ноль, эти страницы кучи добавляются обратно в могилу. Перемещение страниц из Эдема в могилу немного уменьшит размер кучи, однако Ruby's Garbage Collector не сильно уменьшит его, поскольку предполагает, что, если вы уже создали большую коллекцию объектов, вы сделаете это снова. Одна книга, в которую я рекомендую углубиться, - это «Оптимизация производительности Ruby», поскольку она подробно описывает сборщик мусора ruby.