На моем ноутбуке, работающем на 64-битной Windows 7 и с 2 ГБ свободной памяти (как сообщает диспетчер задач), я могу сделать:
var x = new Dictionary<Guid, decimal>( 30 * 1024 *1024 );
Не имея компьютера с большим количеством ОЗУ у меня в руках, мне интересно, будет ли это масштабироваться так, что на компьютере с 4 Гб свободной памятью я смогу выделить 60 М элементов вместо "всего лишь" 30 М и так на?
Или существуют другие ограничения (.Net и/или Windows), с которыми я столкнусь, прежде чем я смогу использовать всю доступную оперативную память?
Обновление: ОК, поэтому мне не разрешено выделять один объект размером более 2 Гб. Это важно знать! Но тогда мне, конечно, интересно узнать, смогу ли я полностью использовать всю память, выделив 2 Гб кусками следующим образом:
var x = new List<Dictionary<Guid, decimal>>();
for ( var i = 0 ; i < 10 ; i++ )
x.Add( new Dictionary<Guid, decimal>( 30 * 1024 *1024 ) );
Будет ли это работать, если на компьютере имеется > 20 ГБ свободной памяти?