2010-07-04 4 views
0

J'ai une application serveur qui fonctionne sur un serveur Ubuntu 64 bits avec 4 Go de RAM. Lorsque je définis les paramètres de configuration de JVM (Nous utilisons Sun JVM 1.6) comme ceci: -Xms1024m -Xmx2560m, je vois une allocation de mémoire étrange au démarrage de l'application (Il fonctionne sur Tomcat 6). La commande "top" d'Ubuntu montre que la taille de la mémoire virtuelle est de presque 3,2Gb. Je ne comprends pas si Ubuntu a alloué la mémoire que j'ai demandée lors du démarrage de la JVM, ou peut-être qu'Ubuntu ajoute un échange de partie à la valeur -Xmx et donc je reçois cette grande taille. Si je cours sur un serveur Ubuntu 32 bits et que je configure -Xmx1536m, je vois 1721m lors de l'exécution de la commande "top". Quelqu'un peut-il m'expliquer quels sont ces deltas et d'où ils viennent? J'ai d'autres processus en cours d'exécution sur ces instances et je veux comprendre quelle configuration de mémoire je devrais appliquer pour eux en tenant compte des résultats de la commande "top" d'Ubuntu.Configuration JVM sur Linux 64 bits

Merci à l'avance, Alex

Répondre

0

Avez-vous essayer un profileur comme YourKit?

+0

Non, je n'ai pas essayé le profileur. – Alex

0

La machine virtuelle Java utilisera une certaine quantité de mémoire supplémentaire à des fins d'entretien ménager internes - ce link peut aider:

Notez également que la génération permanente est cloué sur la fin de l'ancienne génération. Il existe également un cache de petit code de 50 Mo pour la gestion de la mémoire JVM interne. Cela signifie que le tas initial total size = -Xms + -XX: PermSize + ~ 50Mb et que la taille de tas totale maximale = -Xmx + -XX: + MaxPermSize + ~ 50Mb. Par exemple, si -Xms/-Xmx est défini sur 512m et -XX: PermSize/MaxPermSize sur 128m, la taille totale de la machine virtuelle sera d'environ 700 Mo.

Questions connexes