Ограничения памяти в 64-битном приложении .Net?

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

20
задан Dan Byström 19 October 2015 в 09:07
поделиться