1) Я бы догадался о рабочем процессе, но это должно быть настраиваемо в IIS до предела памяти, который может использовать рабочий процесс. Другим фактором является то, какой уровень битов использует ваше программное обеспечение, например 32 бит имеет физический предел 4 ГБ, так как это общее адресное пространство.
2) Вероятно, но не забывайте, что фрагментация памяти может сыграть определенную роль в более быстром выходе из памяти, чем вы думаете, например. если имеется запрос памяти для непрерывного фрагмента памяти объемом 1000 МБ, то это не обязательно может быть найдено в текущей памяти.
3) Вы изучили данные дампа, чтобы увидеть, что находится в памяти, когда генерируется исключение? Если нет, есть способы получить снимок памяти, чтобы увидеть, как она выглядит, поскольку это может дать вам больше подсказок о том, что происходит.