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

Eclipse Java Discussion :

Tuning mémoire, Eclipse trouve le moyen de sortir de sa camisole


Sujet :

Eclipse Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut Tuning mémoire, Eclipse trouve le moyen de sortir de sa camisole
    Bonjour,

    Je travaille pour le moment sur une machine assez limitée, tant en mémoire qu'en vitesse d'accès disque, et donc j'ai besoin de restreindre mes différent process Java (Eclipse, GWT super dev, Wildfly domain) afin d'éviter que mon système ne s'effondre et que je me retrouve à attendre les 3/4 du temps devant des fenêtres grisées pendant que l'OS swappe comme un malade.

    Problème, pour des raisons qui m'échappent, Eclipse qui devrait être limité à +-1G de mémoire se retrouve à dépasser les 2G. J'ai rajouté le paramètre MaxMetaspaceSize ce matin qui a eu son petit effet, pendant un moment, mais en fin de journée, le système s'est de nouveau effondré:

    top - 18:27:58 up 10 days, 5:24, 1 user, load average: 1,97, 1,54, 1,26
    Tasks: 318 total, 1 running, 317 sleeping, 0 stopped, 0 zombie
    %Cpu(s): 1,8 us, 0,8 sy, 0,0 ni, 84,5 id, 13,0 wa, 0,0 hi, 0,0 si, 0,0 st
    KiB Mem : 8045372 total, 274620 free, 6669640 used, 1101112 buff/cache
    KiB Swap: 8257532 total, 5593744 free, 2663788 used. 309672 avail Mem

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    1130 davidd 20 0 8066048 2,042g 26544 S 1,7 26,6 84:17.61 java
    $ free -m
    total used free shared buff/cache available
    Mem: 7856 6440 505 619 910 493
    Swap: 8063 3097 4966
    Les paramètres utilisés pour le moment sont un Xmx à 850M et un metasize à 256M
    /home/davidd/Applications/java/64bits/jdk1.8.0_102/bin/java -Dosgi.requiredJavaVersion=1.8 -XX:+UseG1GC -XX:+UseStringDeduplication -Dosgi.requiredJavaVersion=1.8 -Xms256m -Xmx850m -XX:MaxMetaspaceSize=256m -jar /home/davidd/Applications/eclipse-jee-neon//plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar -os linux -ws gtk -arch x86_64 -showsplash -launcher /home/davidd/Applications/eclipse-jee-neon/eclipse -name Eclipse --launcher.library /home/davidd/Applications/eclipse-jee-neon//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.400.v20160518-1444/eclipse_1617.so -startup /home/davidd/Applications/eclipse-jee-neon//plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar --launcher.appendVmargs -exitdata 6b800a -product org.eclipse.epp.package.jee.product org.eclipse.platform -vm /home/davidd/Applications/java/64bits/jdk1.8.0_102/bin/java -vmargs -Dosgi.requiredJavaVersion=1.8 -XX:+UseG1GC -XX:+UseStringDeduplication -Dosgi.requiredJavaVersion=1.8 -Xms256m -Xmx850m -XX:MaxMetaspaceSize=256m -jar /home/davidd/Applications/eclipse-jee-neon//plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar
    J'ai bien tenté un jmap pour savoir quel pool bouffait cette mémoire mais j'ai eu droit à un
    Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 9883: Operation not permitted
    sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 9883: Operation not permitted
    at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.execute(LinuxDebuggerLocal.java:163)
    at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach(LinuxDebuggerLocal.java:278)
    at sun.jvm.hotspot.HotSpotAgent.attachDebugger(HotSpotAgent.java:671)
    at sun.jvm.hotspot.HotSpotAgent.setupDebuggerLinux(HotSpotAgent.java:611)
    at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:337)
    at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:304)
    at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
    at sun.jvm.hotspot.tools.Tool.start(Tool.java:185)
    at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
    at sun.jvm.hotspot.tools.HeapSummary.main(HeapSummary.java:49)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.tools.jmap.JMap.runTool(JMap.java:201)
    at sun.tools.jmap.JMap.main(JMap.java:130)
    Caused by: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 9883: Operation not permitted
    at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach0(Native Method)
    at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.access$100(LinuxDebuggerLocal.java:62)
    at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$1AttachTask.doit(LinuxDebuggerLocal.java:269)
    at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.run(LinuxDebuggerLocal.java:138)
    Quelqu'un aurait-il des paramètres supplémentaires à me suggérer ?

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Salut,

    As-tu essayé de jouer sur la configuration du garbage collector dans eclipse.ini?

    A+.

  3. #3
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tu peux être plus précis sur ce que tu entends par "jouer"? Quelles valeurs suggèrerais tu de changer.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Re,

    Moi, j'ai pu limiter avec un pic de 1,4G quand il y a pas mal de tache et rechute vers les 800-900M avec ce conf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    openFile
    --launcher.appendVmargs
    -vmargs
    -Dosgi.requiredJavaVersion=1.8
    -Xms256m
    -Xmx512m
    -XX:+UnlockExperimentalVMOptions
    -XX:+UseG1GC
    -XX:+UseStringDeduplication
    -XX:MinHeapFreeRatio=10
    -XX:MaxHeapFreeRatio=70
    -XX:MaxPermSize=64m
    -XX:MaxGCPauseMillis=10
    Eclipse est bien fluide et j'ai pas mal de projets ouverts utilisant divers plugins.

    A+.

  5. #5
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Je vais essayer dans le genre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    -vmargs
    -Dosgi.requiredJavaVersion=1.8
    -XX:+UseG1GC
    -XX:+UseStringDeduplication
    -Dosgi.requiredJavaVersion=1.8
    -Xms256m
    -Xmx512m
    -XX:+UnlockExperimentalVMOptions
    -XX:MaxMetaspaceSize=256m
    -XX:MaxGCPauseMillis=10
    -XX:MinHeapFreeRatio=10
    -XX:+PrintFlagsFinal
    -XX:+UnlockDiagnosticVMOptions
    -XX:+AggressiveOpts
    Je devrais avoir du retour vers demain soir sur la taille de mon eclipse



    Au passage:

    -XX:MaxPermSize=64m -> déprécié et ignoré par java 8, il n'y a plus de permgen en java 8 il me semble.
    -XX:MaxHeapFreeRatio=70 -> c'est la valeur par défaut de la jvm

    Il y a quand même un truc bizarre dans la mémoire de la jvm. Avec un kill 3 j'obtiens ces stats:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Heap
     garbage-first heap   total 524288K, used 299534K [0x00000000e0000000, 0x00000000e0101000, 0x0000000100000000)
      region size 1024K, 6 young (6144K), 3 survivors (3072K)
     Metaspace       used 112919K, capacity 123504K, committed 123720K, reserved 1157120K
      class space    used 13695K, capacity 16975K, committed 17048K, reserved 1048576K
    Il a bien réservé mais pas encore utilisé 1G sur l'os alors que le meta a un max à 256M


    edit: grâce à ce post http://stackoverflow.com/questions/3...xmetaspacesize j'ai ajouté -XX:CompressedClassSpaceSize=200m et il a réduit la réservation metaspace. Reste à voir après 2 jours d'utilisation si c'est stable

  6. #6
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Bon ça n'a pas l'air d'aller mieux. J'ai laissé tourner eclipse toute la nuit, et il bouffe à nouveau de la mémoire à donf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                         
    31194 davidd    20   0 6370260 1,719g  26284 S   1,7 22,4  84:05.26 java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Heap
     garbage-first heap   total 524288K, used 424617K [0x00000000e0000000, 0x00000000e0101000, 0x0000000100000000)
      region size 1024K, 18 young (18432K), 1 survivors (1024K)
     Metaspace       used 168787K, capacity 183659K, committed 183780K, reserved 366592K
      class space    used 18962K, capacity 23257K, committed 23320K, reserved 204800K
    j'ai aussi 75 thread avec un Xss à 1m, si je fais le total donc

    524288K+366592K+76800K = 945M


    Ce ne sont pas non plus des fichiers mappés en mémoire, pmap me rapport seulement 29M de fichier mappé dans l'occupation mémoire, le reste étant des mallocs

    J'ai 800M disparus

Discussions similaires

  1. Eclipse Indigo, plus moyen de modifier une classe
    Par peofofo dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/10/2011, 14h28
  2. Probleme mémoire eclipse
    Par wagui26 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 25/04/2008, 13h09
  3. Réponses: 1
    Dernier message: 15/12/2006, 11h44
  4. Charge mémoire eclipse
    Par BainE dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 16/11/2006, 16h49

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