В соответствии со многими ответами SO и это широко цитируемое сообщение в блоге, приложение .NET 4.5, построенное для "Any CPU" с "предпочтительным 32" -бит "будет работать как 32-разрядный процесс как в 32-разрядной, так и в 64-разрядной системах (в отличие от .NET 4.0 и ранее). Другими словами, x86 и AnyCPU с "предпочтительным 32-битным" выбранным эквивалентом (игнорируя, может ли он запускаться на ARM).
Однако мои тесты показали, что в 64-битной системе приложение AnyCPU предпочитает 32-разрядное приложение (которое я уверен, запускает 32-разрядный) может выделить больше памяти, чем x86. Я написал консольное приложение .NET 4.5 С#, которое выделяет массивы в 10 Мбайт байт в цикле (сохраняя ссылки, конечно), пока не попадет в OutOfMemoryException и не запустит его в 64-разрядной системе с большим количеством ОЗУ. Когда он построен как x86, он падает примерно на 1,2 ГБ. Один и тот же код, построенный как "Любой процессор (предпочтительный 32-разрядный)", достигает 1,5 ГБ.
Почему разница?