Вы должны исправить что-то еще. Вектор будет использовать, если что-либо, на больше памяти, чем ArrayList, и возвращение перечисления вместо самого списка добавляет лишь чуть больше использования памяти, если только вызывающая сторона не использует итератор списка, в этом случае это строка мяч. Конечно, нет никакой причины для этой стратегии использовать значительно меньше памяти.
Разве вы не возвращали копию исходного списка? как новый ArrayList? Это удвоило бы использование памяти, по крайней мере, во время создания копии, но это был бы очень длинный список ...