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 :

[JVM][OPTIONS][OPTIMISATION]pc dédié à Java


Sujet :

Java

  1. #1
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut [RESOLU][JVM][OPTIONS][OPTIMISATION]pc dédié à Java
    Salut,
    Je voudrais optimiser la JVM qui englobe mon application. Chez le client, un pc sera réservé à la seul utilisation de l'application Java.
    C'est pourquoi je voudrait que la JVM puisse se réserver l'ensemble de la mémoire (enfin presque), du temps processeur etc....
    J'ai donc été sur le site de sun :
    http://java.sun.com/docs/hotspot/VMOptions.html
    et j'ai regardé un peu les option, mais j'a pô tout compris.... :c\
    Voici ce que j'ai relevé :
    -XX:MaxHeapFreeRatio=<Maximum> heap free percentage (default 70)
    -X:MinHeapFreeRation=<Minimum> heap free percentage (default 40)

    -Xint Intepreter only (no JIT Compilation)

    -XX:+UseBoundThreads This option forces all threads to be created as bound threads.

    -XX:MaxHeapFreeRatio=70 Maximum percentage of heap free after GC to avoid shrinking
    -XX:MinHeapFreeRatio=40 Minimum percentage of heap free after GC to avoid expansion

    -XX:+UseThreadPriorities Use native thread priorities

    -XX:TargetSurvivorRatio=50 Desired percentage of survivor space used after scavenge

    -XX:ReservedCodeCacheSize=32m Reserved code cache size (in bytes) - maximum code cache size. [Solaris 64-bit: 1024m]

    -XX:SurvivorRatio=64 Ratio of eden/survivor space size [Solaris: 64, Solaris: 32 (on 1.3.1 and later), Linux/Windows: 8]

    -XX:ThreadStackSize=512 Thread Stack Size (in Kbytes) (0 means use default stack size) [Sparc: 512, Solaris Intel: 256, Sparc 64bit: 1024 all others 0]
    Pouvez-vous m'en dire plus sur les options de la JVM et celles qui sont vraiment interressante (surtout l'utilisation du maximum de RAM)
    L'application tournera (normalement) sur un PC avec 256 (voir 512) de RAM sous win98 (ou 2000 ou XP keske vous me conseillez) avec un processeur à 1.2GHZ (voir plus)
    Pour l'instant je suis sur un pc avec 256RAM win98SE et un proc à 500Mhz
    merci pour toute réponse

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Xmx 256m maClasseMain
    Spécifie une taille maximum pour le tas (256 Mo). Le tas étant utilisé par l'interpréteur pour charger dynamiquement les objets et les tableaux.

  3. #3
    Membre averti
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Points : 444
    Points
    444
    Par défaut
    Ca dépend de ton application.
    A-t-elle de la peine sans option (cad les options par défauts suffisent-ils) ?
    Utilises-tu beaucoup ou peu de Thread ? (Attention swing utilisent quelques thread pour la gestion des événements et c'est à tenir en compte)

    Quelques explications :
    -XX:MaxHeapFreeRatio=<Maximum> heap free percentage (default 70)
    -X:MinHeapFreeRation=<Minimum> heap free percentage (default 40)
    Détermine le pourcentage maximum et minimum de l'utilisation de la mémoire réservée à la JVM

    -Xint Intepreter only (no JIT Compilation)
    Te permet de ne pas utiliser le Just In Time, il saggit d'une précompilation qui compile les méthode aux besoins en executable (quand c'est possible), il le fait avant le premier appel. En fait celà optimise le traitement en général, mais parfois celà peut ralentir. Bref utiliser cette option si rien d'autres ne marche.

    Pour une meilleur explication et optimisation :
    http://java.sun.com/docs/hotspot/gc/index.html
    http://java.sun.com/docs/hotspot/ism.html
    http://java.sun.com/j2se/1.4.1/docs/tooldocs/windows/java.html

    JHelp

  4. #4
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    merci beaucoup pour ces explication :D j'va voir les sites tout de suite...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    En fait la taille du tas est comprise entre -Xms (taille initiale spécifiée) et -Xmx (taille max spécifiée) .

    La VM gère la mémoire par une succession de "générations" (dans le sens population d'objets). A chaque passage du GC (qui intervient quand il y a surpopulation) correspond l'avènement d'une nouvelle génération, dans laquelle peuvent avoir survécu des individus de la génération précédente.

    A chaque génération la JVM recalcule la taille du tas de façon à ce que le pourcentage d'espace libre dans le tas soit compris entre MinHeapFreeRatio et MaxHeapFreeRatio. Un bon choix de ces valeurs permet de faire en sorte d'éviter une surpopulation (un peu comme le choix judicieux d'une "initial capacity" pour une collection java permet d'éviter au maximum des réallocations de mémoire)

  6. #6
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    Donc pour ce qui est la mémoire allouée à la JVM c'est :
    -Xms64m : pour allouer 64Mo au minimum (et donc au démarrage)
    -Xmx200m : le maximum de mémoire que la JVM peut réserver

    -Xint : Je ne c pas trop koi penser de cette option. La compilation JIT permet de compiler certaines méthode au chargement en code natif (si je me trompe...) pour accélérer leur exécution
    Mais dans quelles cas c vraiment utile (pour moi tout le temps) ou inutile ?

    -XX:+UseBoundThreads This option forces all threads to be created as bound threads. : qu'est-ce qu'un bound thread ??

    -XX:MaxHeapFreeRatio=<Maximum> heap free percentage (default 70)
    -X:MinHeapFreeRation=<Minimum> heap free percentage (default 40)
    Détermine le pourcentage maximum et minimum de l'utilisation de la mémoire réservée à la JVM
    Si on passe au dessous de MinHeapFreeRation je me doute que le GC va passer par là pour nettoyer et libérer de la mémoire.
    Mais si on passe au dessus de MaxHeapFreeRation qu'est-ce que ça fait ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    -Xint La plupart des applications sont accélérées par le JIT. Donc, suis le conseil de JHelp, essaye d'abord sans

    UseBoundThreads: permet d'associer les threads java de ton application
    à un thread du noyau du système d'exploitation (bound est le participe passé de bind, to bind = lier). Ca ne marche que sous solaris, alors tu peux oublier dans ton cas

    On s'est peut-être mal compris:
    -XX:MaxHeapFreeRatio: Pourcentage maximum d'espace libre dans le tas après le passage du GC pour éviter que la JVM ne réduise la taille du tas (une valeur de 70 signifie que s'il y a plus de 70% d'espace libre dans le tas après passage du GC, la JVM réduira la taille du tas, mais jamais en dessous de -Xms)

    -XX:MinHeapFreeRatio: Pourcentage minimum d'espace libre dans le tas après le passage du GC pour éviter que la JVM n'augmente la taille du tas (une valeur de 40 signifie que s'il y a moins de 40% d'espace libre dans le tas après passage du GC, la JVM augmentera la taille du tas, mais jamais au dessus de -Xmx)

    Voilà...voilà... 8)

  8. #8
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    ha ben merci beaucoup :cD là ça devrait être bon
    J'ai été voir aussi les URL et tout ça ... Je crois que j'ai compris pas mal de truc sur comment ça marche une JVM :c)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimisation de code java
    Par opensource dans le forum Langage
    Réponses: 9
    Dernier message: 18/04/2008, 17h30
  2. Optimiser un programme java
    Par piteon dans le forum Général Java
    Réponses: 27
    Dernier message: 05/08/2007, 20h01
  3. [jvm] option de lancement
    Par _Eric_ dans le forum Langage
    Réponses: 2
    Dernier message: 16/11/2006, 17h00
  4. [JVM]erreur d execution de java
    Par RR instinct dans le forum Langage
    Réponses: 1
    Dernier message: 27/10/2006, 12h47
  5. [Stratégie]optimiser mon application java
    Par Malo dans le forum Langage
    Réponses: 3
    Dernier message: 14/02/2006, 04h45

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