Поскольку вы спрашиваете, почему GC не спасает вас, я отвечу на это.
Использование языка программирования / среды с сборщиком мусора облегчает вам жизнь, но не даетсделать управление памятью ушедшим в прошлое.
Если вы назначаете большой кусок памяти, превышающий 2 гигабайта на 32-битной машине xp, вы только что достигли одной из первых границ памяти .Net.Оставлять 2 гигабайта в памяти - это всегда плохая идея.
На машине с ограниченным объемом памяти, работающей с огромной базой данных или чем-то подобным, вы быстро выйдете за границы доступной памяти.Так как GC не знает ОС, он может заметить, что со временем возникает нехватка памяти (создание огромных объектов, таких как растровые изображения, может вызвать эту ситуацию).Ручной вызов GC.Collect, когда вы установили огромный объект, ничем не поможет.
Хранение большого словаря в памяти - очень простое описание.Можете ли вы рассказать нам, что в коллекции и насколько эти предметы теоретически большие.
Если вы имеете в виду большие, как 2 147 483 647 предметов, вы можете достичь предела целочисленного размера.
Подводя итог:
- Не оставляйте ненужные элементы в памяти илипоменять их на диск.
- Звоните в GC. Соберите, как только вы освободите «большие» элементы (но не в цикле удаления элементов, после цикла, пожалуйста)