R
Делал когда-то на Си программу-буфер, которая должна была сглаживать пульсации между потоком UDP данных и потребителем без потерь, потому как потребитель мог временами тупить. Мне удавалось возвращать память, потребляя 100 кБ в норме и 100 МБ в пике. Но это особенность архитектуры программы, всего одна задача и все под нее заточено. У интерпретатора куда больше задач. Память сильно фрагментируется, освободить ее проблематично. Пустая трата времени.
Если вы хотите серьезно экономить память, куда более полезным может оказаться спуск крупных структур с адаптированным под задачу поиском в XS и выдачей SV/AV/HV только когда нужно.