Вам нужно не только достаточно памяти, она должна быть смежной. Со временем память становится фрагментированной, и становится все труднее находить большие блоки. Существует не так много хороших решений, за исключением создания изображений из небольших растровых изображений.
new Bitmap (x, y) почти просто нужно выделить память - при условии, что ваша программа каким-то образом не повреждена (есть ли какой-нибудь небезопасный код, который может повредить кучу), тогда я бы начал с этого выделения терпит неудачу. Потребность в непрерывном блоке - то, как казалось бы маленькое распределение могло потерпеть неудачу. Фрагментация кучи - это то, что обычно решается с помощью специального распределителя - я не думаю, что это хорошая идея в IIS (или возможно).
Чтобы увидеть, какую ошибку вы получаете из памяти, попробуйте просто выделить гигантский битовый образ в качестве теста - посмотрите, какую ошибку он выдает.
Одна стратегия, которую я видел, заключается в том, чтобы предварительно выделить несколько больших блоков памяти (в вашем случае растровые изображения) и рассматривать их как пул (получить и вернуть их в пул). Если они вам нужны только в течение короткого периода времени, вам, возможно, удастся просто оставить несколько в памяти и поделиться ими.