La mémoire virtuelle n'a pas vraiment d'importance pour vous.
La différence fondamentale entre 32 et 64 bits est que l'espace d'adressage en 64 bits est incroyablement grand. Si 10 Go vous semblent beaucoup, sachez que .NET en 64 bits peut utiliser des TiBs de mémoire comme celui-ci. En 32 bits, .NET est beaucoup plus conservateur (tout comme la JVM) - l'espace d'adressage est de 4 Go. total - ce n'est pas beaucoup.
Mais c'est sans importance - ça n'a pas d'importance. C'est juste une chose qui simplifie grandement la programmation, et qui n'a aucun effet négatif sur le système d'exploitation hôte. Il crée un espace d'adressage continu pour la VM, ce qui signifie que vous n'avez pas besoin de fragmenter le tas (ou pire, la pile, où c'est plus ou moins impossible - mais ils ont tendance à être seulement un MiB ou plus) lorsque vous avez besoin de plus de mémoire "réelle". Lorsque vous engagez finalement la mémoire virtuelle, elle devient légèrement plus réelle - à ce moment, elle doit plus ou moins être soutenue par un peu de le stockage des données - que ce soit le fichier de page (swap) ou la RAM physique.
En fait, l'emplacement physique de la mémoire n'est pas nécessairement continu, mais cela se fait hors de votre portée, et le mappage est généralement très rapide. D'un autre côté, devoir, disons, indexer un tableau, qui est en fait fragmenté sur 10 blocs de mémoire d'adresse virtuelle différents, c'est un travail (complètement inutile).
Vous l'avez compris, la mémoire virtuelle est presque libre sur 64 bits. L'approche de base est "si elle est là, utilisez-la". Vous ne limitez pas les autres applications, et cela vous permet d'économiser pas mal de travail si vous hacer finissent par l'utiliser. Mais jusqu'à ce que ce moment arrive, vous n'avez qu'une réservation. Cela ne se traduit pas du tout par une mémoire physique. Vous ne payez pas pour les amis qui pourraient venir ce soir s'asseoir à votre table, mais vous avez toujours l'espace pour qu'ils puissent s'asseoir s'ils viennent - et ce n'est que lorsqu'ils viennent enfin que vous êtes réellement "facturé".
Voir cette question pour plus d'informations sur la façon dont Java se comporte sur différentes machines et avec différentes versions : http://stackoverflow.com/questions/2915276/what-is-the-default-maximum-heap-size-for-suns-jvm-from-java-se-6 La taille maximale du tas détermine également la quantité de mémoire virtuelle réservée, car le tas doit être un espace d'adressage continu. S'il n'était pas pré-réservé, il pourrait arriver que le tas ne puisse pas s'étendre jusqu'à cette valeur maximale, parce que quelqu'un d'autre a réservé une région de l'espace d'adressage à l'endroit où le tas doit s'étendre.