vendredi 1 octobre 2010

java : JVM 32 bits et 64 bits

Voici un extrait d'une conversation d'expert sur les JVMs 32 bits et 64 bits ...


L'intérêt d'une JVM 64-bits est uniquement de pouvoir manipuler plus de mémoire, donc d'avoir un paramètre -Xmx beaucoup plus gros qu'une JVM 32-bits.

La plus part des JVM 32-bits ne peuvent pas dépasser 3,5 Go de Xmx et c'est beaucoup moins pour certaines implémentations.

Aujourd'hui la plus part des applications Web tournent sur des JVM 32-bits et c'est largement suffisant : une application Web bien codé tourne très bien un JVM de 1 Go tout en traitant plusieurs sessions utilisateurs. Si vous avez plus d'utilisateurs que prévu alors vous devrez déployer d'autre JVM de 1 Go avec la même application et mettre en place un sytème de load-balancing (c'est ce qu'on appelle la "scalabilité").

Attention, il ne faut pas confondre les bits de la JVM et les bits de l'OS : plusieurs JVM 32-bits tournant sur un OS 64-bits est une architecture très répendue.



Qui dit plus de mémoire dit des garbage collector plus longs à réaliser,

Qui dit pointeur de 64-bits dit plus de mémoire à manipuler pour la même quantité d'information métier.

Donc un JVM 64-bits avec un -Xmx10g sera beaucoup plus lente "globalement" qu'une JVM 32-bits avec un -Xmx1g.

Une JVM 64-bits est bien adapté à un batch qui par conception doit manipuler un très gros volume de données en mémoire.

Une JVM 64-bits est aussi un paliatif à une application Web mal conçue (cas par exemple de caches mémoires trop gros ou non limités).

Aucun commentaire:

Enregistrer un commentaire