Por que 'Qualquer CPU (prefere 32 bits)' permite alocar mais memória que o x86 no .NET 4.5?

De acordo com muitas respostas eeste post de blog amplamente citado, um aplicativo .NET 4.5 criado para 'Qualquer CPU' com a opção 'preferir 32 bits' selecionada será executado como um processo de 32 bits nos sistemas de 32 e 64 bits (diferente do .NET 4.0 e versões anteriores). Em outras palavras, x86 e AnyCPU com 'preferir 32 bits' selecionado são equivalentes (ignorando se ele pode ou não ser executado no ARM).

No entanto, meus testes mostraram que, em um sistema de 64 bits, um aplicativo 'AnyCPU prefere 32 bits' (que eu confirmo que executa 32 bits) pode alocar mais memória que um x86. Eu escrevi um aplicativo de console .NET 4.5 C # que aloca matrizes de 10 MB em um loop (mantendo as referências, é claro) até que ele atinja uma OutOfMemoryException e o executei em um sistema de 64 bits com bastante RAM. Quando construído como x86, cai para cerca de 1,2 GB alocado. O mesmo código criado como 'Qualquer CPU (prefere 32 bits)' chega a 1,5 GB.

Por que a diferença?

questionAnswers(1)

yourAnswerToTheQuestion