На моем ноутбуке, работающем под управлением 64-битной Windows 7 и с 2 ГБ свободной памяти (по данным диспетчера задач), я могу делать:
var x = new Dictionary<Guid, decimal>( 30 * 1024 *1024 );
Без компьютера с большим объемом ОЗУ в моих руках, Мне интересно, будет ли это масштабироваться так, чтобы на компьютере со свободной памятью 4 Гб я мог выделить 60M элементов вместо «просто» 30M и так далее?
Или есть другие ограничения (для .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 ГБ?