Разница между списком и перечислением - PullRequest
4 голосов
/ 09 апреля 2010

У меня есть метод для получения всех записей и возврата в тип списка, но я получил из памяти ошибка. Поэтому я изменил тип возвращаемого значения с List на Enumeration, в методе вместо ArrayList используются Vector и return vector.elements в конце метода. Работает без ошибок. но я не поняла почему.

Может ли кто-нибудь объяснить, почему этот Перечисление сработало?

Ответы [ 2 ]

5 голосов
/ 09 апреля 2010

Enumeration - это «старая версия» Iterator.
Vector - это «старая версия» ArrayList.

Разница в памяти не должна быть значительной, поэтому, возможно, наблюдаемые вами колебания связаны с другой вещью.

В зависимости от размера списка вам может потребоваться увеличить максимальный объем памяти JVM (используя Xmx, Xms и / или XX:MaxPermSize)

0 голосов
/ 09 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...