What happens when a 32 bit program (running on an 64 bit machine) hits the memory limit?
A mesma coisa que acontece em um sistema de 32 bits: o programa falha de alguma forma.
No que diz respeito ao programa de 32 bits, o "universo" consiste em até 4 GB de dados. Ele não sabe sobre a área maior fora de sua própria pequena caixa (pense na analogia do peixe que Michio Kaku usa em seu livro Hiperespaço ).
Se você abrir muitas abas e forçar o uso da memória, ele preencherá o universo e, quando acabar, reclamará que não tem memória suficiente para abrir uma nova aba ou exibir uma imagem ou algo parecido. Bem, vai reclamar se estiver bem escrito; se for mal escrito, então ele irá falhar.
Pense nisso de um ponto de vista de programação de baixo nível. O programa de 32 bits usa ponteiros de 32 bits para armazenar os dados. Isso significa que pode indicar no máximo 4 GB de dados. Se ele já usou 4GB, então, mesmo que o sistema operacional possa dar mais, qual seria o valor do novo ponteiro? O novo endereço seria muito distante e o programa não seria capaz de colocar um endereço tão grande em um ponteiro de 32 bits.
Como analogia, pense nos números de telefone. Digamos que na sua cidade, não há muitas pessoas, portanto, seus números de telefone têm 5 dígitos, permitindo até 10.000 números, portanto, todos os catálogos de endereços têm até 10.000 espaços para números de telefone. O país, no entanto, tem muitas pessoas, por isso usa números de 7 dígitos. Mesmo que o país possa lhe dar o número de uma pessoa distante, você não poderá armazená-lo em seu catálogo de endereços porque você só tem 5 dígitos de espaço para imprimir números. depois de imprimir 10.000 números, o livro está completamente cheio.