На моем ноутбуке под управлением 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 ГБ свободной памяти?