Либо ваше приложение израсходовало доступную ему память, либо у вас возникла проблема с фрагментацией кучи.
В первом случае вы создали достаточно объектов, чтобы занять всю память, и у вас все еще есть ссылки на них, поэтому сборщик мусора не может их очистить.
Во втором случае, фрагментации кучи, вы пытаетесь создать объект, который больше, чем самый большой непрерывный фрагмент памяти в куче. Это более редко, но, безусловно, происходит в некоторых случаях. Обычная куча будет сжата во время выполнения gc, а куча больших объектов — нет.
В MSDN есть хорошая статья о куче больших объектов.
Редактировать: я вспомнил еще один способ избавиться от памяти. Вы можете попробовать создать объект размером более 2 ГБ. Это максимальный размер объекта в .NET даже для 64-разрядной версии.
person
Mike Two
schedule
26.10.2009