Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2954 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  (Linux) Fuite Memoire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

(Linux) Fuite Memoire

n°1921524
ffluff
Challenge Everything
Posté le 05-09-2009 à 14:18:30  profilanswer
 

Bonjour  :hello:  
 
 
J'ai développé une application en java multithreadé (~10 threads), elle tourne sous Linux Debian Stable.
Il y a quelques semaine l'application s'est faite "tuer" par le noyau pour libérer de la mémoire sur le serveur.(message syslog)
En effet l'appli avait utilisé toute la ram et tout le swap dispo...
 
Ce que je ne comprends pas c'est qu'un des Thread utilise les fonctions Runtime.getRuntime().totalMemory(); et Runtime.getRuntime().freeMemory(), et log les valeurs obtenues toutes les 5-10sec, ca ne depasse jamais 25Mo, or quand je fais un top mon application au lancement fait 80Mo(je comprends c'est la JVM) et au bout de quelques jours elle fait 300Mo (la je vois pas)
 
J'ai fais des graphs de ces valeurs de la mémoire "RES" du top et ca donne un truc du genre stable (au tour de 80MO) pendant les premieres heures et aprés ca ne cesse d'augmenter de facon constante.(Ce n'est pas un pick d'un seul coup).
 
 
Vu que les infos Runtime n'expliquent pas cette augmentation, auriez vous une idée d'ou ca pourrait venir ?
 
Auriez vous des outils permettant de trouver d'où vient cette fuite mémoire?
 
 
Questions bonus:
1°)Est ce qu'une fuite dans un jar, apparaitrait dans Runtime.getRuntime().freeMemory() ?
2°)Est ce que des appels excessifs a Class.forName() (sur un meme nom de class) ont un impacte sur la jvm ?
3°)Est ce qu'une utilisation abusive de "synchronized" pourrait être responsable ?

Message cité 1 fois
Message édité par Elmoricq le 18-09-2009 à 13:45:41
mood
Publicité
Posté le 05-09-2009 à 14:18:30  profilanswer
 

n°1921935
magat
Posté le 07-09-2009 à 16:11:53  profilanswer
 

Un outil qui peut te permettre de localiser ton problème : jconsole, normalement livré avec ta jvm

n°1925066
tcourant
Posté le 18-09-2009 à 13:42:16  profilanswer
 

Cela peut venir des ressources internes, comme les pointeurs de fichier ouvert.  
Pour les problemes de mémoire classique, j'ai publié un article sur mon blog : http://tcourant.wordpress.com/2009 [...] tion-java/
 

ffluff a écrit :

Bonjour  :hello:  
 
 
J'ai développé une application en java multithreadé (~10 threads), elle tourne sous Linux Debian Stable.
Il y a quelques semaine l'application s'est faite "tuer" par le noyau pour libérer de la mémoire sur le serveur.(message syslog)
En effet l'appli avait utilisé toute la ram et tout le swap dispo...
 
Ce que je ne comprends pas c'est qu'un des Thread utilise les fonctions Runtime.getRuntime().totalMemory(); et Runtime.getRuntime().freeMemory(), et log les valeurs obtenues toutes les 5-10sec, ca ne depasse jamais 25Mo, or quand je fais un top mon application au lancement fait 80Mo(je comprends c'est la JVM) et au bout de quelques jours elle fait 300Mo (la je vois pas)
 
J'ai fais des graphs de ces valeurs de la mémoire "RES" du top et ca donne un truc du genre stable (au tour de 80MO) pendant les premieres heures et aprés ca ne cesse d'augmenter de facon constante.(Ce n'est pas un pick d'un seul coup).
 
 
Vu que les infos Runtime n'expliquent pas cette augmentation, auriez vous une idée d'ou ca pourrait venir ?
 
Auriez vous des outils permettant de trouver d'où vient cette fuite mémoire?
 
 
Questions bonus:
1°)Est ce qu'une fuite dans un jar, apparaitrait dans Runtime.getRuntime().freeMemory() ?
2°)Est ce que des appels excessifs a Class.forName() (sur un meme nom de class) ont un impacte sur la jvm ?
3°)Est ce qu'une utilisation abusive de "synchronized" pourrait être responsable ?



Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  (Linux) Fuite Memoire

 

Sujets relatifs
[Résolu] Fuite mémoire, que libérer ?Adapter un programme windows sous linux
Différences affichage FF windows / FF Linuxprobleme thread linux (pthread)
Linux / Cross Compiling[C++] Cherche lib + howto pour utiliser le pilote wifi (linux)
socket pas thread safe sous linux ? si en fait (resolu)gestion mémoire et shared object
Fuite mémoire tableau double entrée.. 
Plus de sujets relatifs à : (Linux) Fuite Memoire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR