Это совсем не так, как работает Windows.Это виртуальная память операционная система.Вы получаете OOM, когда больше не можете выделять больше виртуальной памяти.Физическая память (RAM) не имеет к этому никакого отношения.
Когда ваш код работает в 32-режиме, он имеет 2 гигабайта адресуемой виртуальной памяти.OOM происходит, когда вы пытаетесь выделить кусок памяти, и не остается дыры, достаточно большой, чтобы соответствовать запросу.Большие распределения проваливаются раньше.Никогда не думайте, что вы можете выделить все, когда программа выделяет больше гигабайта, вероятность того, что она не сможет начать быстро расти.
Проблема, решаемая в 64-битной операционной системе.Размер адресуемой виртуальной памяти находится где-то между 192 гигабайтами и 2 терабайтами, в зависимости от версии Windows.Теперь ограничением является то, сколько из этого огромного адресного пространства сопоставимо .Максимальный размер файла подкачки.Что является движущейся целью, файл подкачки используется другими процессами.Когда вы приближаетесь к пределу, у вас возникают гораздо большие проблемы, например, сбор мусора, который занимает вечность.Вы просто больше не беспокоитесь, рассказывая пользователю о том, как близко к нему приходит OOM, она уже знает по вашей программе, что она больше не реагирует.
Windows Internals - хорошая книга, чтобы узнать больше о том, как работает Windows.