Est-ce un processus 32 bits ont besoin de plus de mémoire quand il fonctionne sur un système 64 bits?

StackOverflow https://stackoverflow.com/questions/1071029

Question

J'ai une application java plutôt mémoire faim. Sur mes systèmes 32 bits avec Windows XP Professionnel l'application il suffit d'exécuter bien si je lui donne -Xmx1280m. Tout finira ci-dessous une exception java.lang.OutOfMemoryError: Java heap space.

Si je lance la même application sur un 64 bits de Windows XP Professionnel (tout le reste exactement la même chose) il faut pour empêcher la -Xms1400m état OutOfMemory.

À ma connaissance, si j'ai un programme C et je compiler 32 bits et 64 bits de la Version 64 bits aura besoin de plus de mémoire, car les pointeurs sont plus larges et ainsi de suite. Dans mon exemple java mais la machine virtuelle (Sun) est le même et le bytecode est le même.

Pourquoi at-il besoin de plus de mémoire sur la machine 64 bits?

Était-ce utile?

La solution

Probablement parce que le machine virtuelle mise en œuvre diffère entre 32/64 architecture peu de telle sorte qu'il consomme plus de mémoire (types plus larges, différents GC).

Le bytecode est hors de propos quand il passe sur les tâches du système sous-jacent. Je ne suis pas sûr que Java et économe en mémoire sont deux termes que je mettrais ensemble de toute façon: P

Autres conseils

Même si votre bytecode est le même, la machine virtuelle Java convertit que le code de la machine, il a donc toutes les mêmes raisons que C pour exiger une empreinte mémoire plus importante.

C'est la même raison que vous déjà inscrit pour le programme C. Le système 64 bits utilise de grandes adresses de la mémoire, l'amenant à être « moins étanches » (je crois que c'est le terme que je l'ai entendu utilisé pour décrire).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top