Le 32-bit/64-bit partie est sans rapport avec Java
Il s'avère que les emplacements de la mémoire dans un système 32 bits sont référencés par des non signé de 32 bits entiers. Cela permet jusqu'à 2^32 possible emplacements de mémoire. Depuis chaque emplacement des magasins de 1 octet 2^32 octets ou 4 GO si vous préférez.
Sur un système 64 bits il y a 2^64 emplacements, ou 16 exaoctets.
Maintenant, dans Windows, la zone contiguë de la partie devient un gros problème, mais c'est juste la façon dont Windows fait les choses. L'idée est que vous avez besoin d'avoir un ensemble de "ininterrompu" de votre tas. Malheureusement, Windows alloue de la mémoire quelque part au milieu. En fait cela vous laisse avec environ la moitié de la gauche ou de la moitié de la droite, à environ 1,5-2 go de morceaux, de répartir votre tas.
Découvrez cette question pour plus de détails sur 32 vs 64 bits.
Edit: Merci mrjoltcola pour l'exa préfixe!