IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Configuration -Xmx sous Windows 2008 server


Sujet :

Java

  1. #1
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut Configuration -Xmx sous Windows 2008 server
    Bonjour,

    J'ai déployé une application Tomcat sous Windows 2008 Server 32bits, avec 4Go de mémoire.
    J'ai fait des essais de configuration mémoire et j'ai attends la limite plus vite que prévu. En pratique, pour un MaxPermSize de 254 Mo, j'ai du limiter Xmx à 1415 Mo. Avec cela, mon process consomme environs 1700 Mo.
    Si j'augmente encore Xmx, le java ne veut pas démarrer.

    Pourquoi est-ce que je ne peux pas monter plus haut, et atteindre au moins les 2 Go pour mon process ?

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    Sur des machines 32 bits il est rarement atteindre la valeur 2GB.

    Xmx c'est un parametre pour java heap size, quand tu lances un programme en java il prend la taille de la memoire comme
    java heap size + JVM

    Si tu augmentes la valeur de Xmx > 1415 Mo alors c'est normal que ton java JVM ne demarre pas.


    Voir ce lien pour le details

    http://java.sun.com/docs/hotspot/Hot...#gc_heap_32bit

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Même si les processus 32bits sous windows peuvent utiliser jusqu'à 2GB (moins ce qui est occupé par les dlls, mais c'est mineur), cette mémoire est fragmentée. L'os charge automatiquement des dlls à gauche et à droite dans le process lors de son démarrage. Dans l'ensemble ça ne fait pas beaucoup de perte (15m à tout casser je dirais), mais pour java ce "à gauche à droite" est catastrophique, car la jvm requièrt, pour son heap, une zone de mémoire continue. Elle cherche donc la plus grand zone mémoire contigue disponible. Chez toi, ça tourne dans les 1415M, ce qui est dans la moyenne, certaines personnes sont plus chanceuses et atteignent les 1.6G, d'autres moins chanceuses et tournent dans le 1G, mais tu n'atteindra jamais les 2G avec un windows 32 bits. Si tu as besoin de plus de mémoire (2 voir 3G par exemple), il faut tourner un OS 64bits, où la zone de mémoire virtuelle est tellement grande que trouver une grosse zone contigue ne pose aucun problème.

  4. #4
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Merci pour ces réponses et le lien.

    Dans mon cas, il est possible d'augmenter un peu le Xmx au détriment du MaxPermSize.
    Petite question subsidiaire : est-ce que la mémoire perm doit aussi être continue et doit-elle être accolée à la heap ?

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    bonne question, merci de l'avoir posée

    Tout la mémoire est contigue, il me semble, en java (hotspot de sun). C'est à dire que les zone permgen, l'eden, le tenured etc sont tous partie du même block au niveau de l'OS.

    Maintenant je me trompe peut-être et, en pratique, c'est fortement dépendant de l'implémentation de la JVM (la application java travaillent sur un espace mémoire virtuelle, comme la JVM crée cet espace ne les concerne pas).


    Pour une idée de la gestion de la mémoire dans la hotspot:
    http://java.sun.com/docs/hotspot/gc5...ations|outline (scroller un peux jusqu'au schéma plus bas )

Discussions similaires

  1. VPN sous Windows 2008 Server R2 Foundation
    Par renouvel dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 27/11/2010, 15h57
  2. [EasyPHP] EasyPHP 1.8 sous Windows 2008 server
    Par diamic dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 08/09/2010, 09h24
  3. Réponses: 4
    Dernier message: 07/09/2010, 16h16
  4. VDI sous Windows 2008 Server R2
    Par ratomms dans le forum Virtualisation
    Réponses: 0
    Dernier message: 07/10/2009, 12h03
  5. DNS sous Windows 2008 server
    Par sarapis dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 15/01/2009, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo