Если вы нажимаете OOM, возможно, вы чрезмерно агрессивны с данными, но для ответа на вопрос:
Да, это может помочь немного - как если бы ему приходилось увеличивать коллекции путем удвоения, это могло бы привести к выделению и копированию вдвое больше памяти для базового массива ( или, точнее, для более ранних копий меньшего размера, которые отбрасываются). Большинство этих промежуточных массивов будут собраны быстро, но когда они станут большими, вы используете «кучу больших объектов», которую сложнее сжать.
Начиная с правильного размера, запрещаются все промежуточные копии массива.
Однако, это также зависит от того, что в массив имеет значение. Как правило, для классов имеется больше данных в каждом объекте (плюс накладные расходы для ссылок и т. Д.) - это означает, что список не обязательно является основным виновником использования памяти; Вы, возможно, сжигаете большую часть памяти на объектах.
Обратите внимание, что x64 предоставит больше общего пространства, но массивы ограничены 2 ГБ - и если каждая ссылка удваивается в размере, это уменьшает вдвое максимальную эффективную длину массива.
Лично я хотел бы разбить огромные множества на более мелкие цепочки списков; зубчатые списки, например.