Кто-либо знает, каково макс. количество объектов в Списке?
Как я увеличиваю тот размер? Или есть ли набор, который берет бесконечные объекты? (так же, как уместился бы в памяти, который является),
Править:
Я добираюсь из исключения памяти, когда количество = 134217728 в списке ints. получило 3 ГБ RAM, которой 2.2 используются. Нормальный звук
][]List
] будет ограничен максимальным значением массива, равным 2 Гб (даже в x64). Если этого недостаточно, то вы используете неправильный тип хранения данных. Вы можете сэкономить много на накладных расходов, начав с правильного размера, хотя - передав []int[
] в конструктор.[
]Re your edit - with 134217728 x Int32, то есть 512MB. Помните, что []List
] использует алгоритм удвоения; если вы передаете элементы через []Add[
] (не выделяя сначала всего места), то он попытается удвоить до 1Гб (поверх 512Мб, которые у вас уже есть, [], остальная часть вашего приложения[], и, конечно же, время выполнения CLR и библиотеки). Я предполагаю, что вы на x86, так что у вас уже есть ограничение в 2 Гб [] для каждого процесса [], и вполне вероятно, что вы фрагментировали вашу "большую кучу объектов" до [] смерти [] во время добавления элементов. [
]Лично, да, это звучит примерно правильно, чтобы начать получение вне памяти в этот момент.[
] []Правка: в .NET 4.5, массивы больше 2GB разрешены, если переключатель [][]
][] включен. Тогда ограничение составляет 2^31 элементов. Это может быть полезно для массивов ссылок (по 8 байт в x64), или массивов больших []struct[
]s.[
] Ограничено только памятью. [
] [] edit: or not, 2Gb's is the limit! Это довольно интересно, []BigArray, обходя ограничение на размер массива 2Гб[][
]]Список будет динамически расширяться и вмещать столько элементов, сколько вы захотите - до тех пор, пока вы не превысите доступную память![
] []Из документации MSDN: [
] []Если значение Count уже равно Capacity, то емкость Списка увеличивается за счет автоматического перераспределения внутреннего массива, а существующие элементы копируются в новый массив до добавления нового элемента.[
] []Если значение Count меньше Capacity, то этот метод является операцией O(1). Если для размещения нового элемента необходимо увеличить мощность, то этот метод становится операцией O(n), где n - счетчик[
].] Ограничение по списку - 2,1 миллиарда объектов или размер вашей памяти, которая когда-либо попадала в первую очередь. [
]]Интерфейс определяет Count и IndexOf и т.д. как тип int, поэтому я бы предположил, что int.MaxValue или 2,147,483,647 - это наибольшее количество элементов, которые вы можете записать в список.[
] []На самом деле надо задаться вопросом, зачем вам понадобилось так много, скорее всего, существует более разумный подход к управлению данными.[
]