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

Langage Perl Discussion :

Perl/java mémoire max utilisée


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Par défaut Perl/java mémoire max utilisée
    Bonjour à tous,
    Depuis ce matin j'essaye de trouver la consommation mémoire de mon programme.
    J'ai un script qui ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #! /usr/bin/perl
    $folder = "../../results/";
     
    foreach $param1 (0.2, 0.1, 0.05, 0.01){
    	foreach $param2 (0.95, 0.9, 0.8) {
    			$file = "first_$param1\_second_$param2.out"; 
    			`java -classpath ../../application.jar -F $param1 -S $param2 >> $folder/$file;
    		}
    	}
    }
    Le but est de trouver combien de ram mon programme utilise pour chaque expérimentation.
    Je n'arrive pas à trouver de manière simple pour calculer la quantité maximum de ram dont le programme a besoin pour s'exécuter (le pic de mémoire).
    Sachant que la consommation que je cherche ne vient pas du script perl en lui même mais du jar java qui est appelé.
    J'ai cherché du côté de java mais rien de bien concluant, les memoryBean.getHeapMemoryUsage() et compagnie n'ont pas l'air de répondre à mes besoins.
    Le plus simple serait de lancer une commande devant la ligne 7 afin de surveiller la consommation.
    J'ai pensé à une méthode qui surveille le processus dans lequel s'exécute mon jar seulement comment connaitre l'identifiant du processus avant de lancer le jar?

    Quelqu'un a t'il une piste ou une réponse afin de m'aider?

    Bonne fin d'après midi

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Il faudrait lancer le java avec fork, et chercher à surveillé ce processus externe, mais je ne sais pas s'il est possible d'examiner la mémoire consommée, d'autant que ça dépendra sans doute du système d'exploitation sur lequel il va tourner.

  3. #3
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    en java, les méthodes d'accès à la mémoire de la classe Runtime, freeMemory, maxMemory, totalMemory ne te suffisent pas ?

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Par défaut
    Merci à vous deux pour vos réponses.
    Je vais regarder de plus près les fork en perl.

    Pour ce qui est des méthodes java, ça ne répond pas vraiment à mes besoins, vu que ça mesure la ram utilisée à l'instant t, alors que je veux le pic de consommation.
    Cela pourrait marcher si je savais où intervient exactement le pic de consommation de mon programme mais ce n'est pas le cas, de plus en fonction des paramètres que je passe cela risque de ne pas se produire au même endroit.
    La seule solution en java serait de mettre des memoryBean à chaque endroit et de garder la plus grande valeur, ce qui n'est pas terrible... autant surveiller le processus qui contient java.

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Si tu es sous Windows, peut-être trouveras-tu des choses intéressantes avec les modules CPAN Win32::Process, dont par exemple Win32::Process::CpuUsage ?

Discussions similaires

  1. Mémoire max utilise par un processus
    Par Nitroreg dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 18/02/2010, 10h10
  2. Réponses: 5
    Dernier message: 12/12/2005, 14h39
  3. application web en java quel outil utiliser
    Par hola dans le forum EDI et Outils pour Java
    Réponses: 4
    Dernier message: 15/10/2005, 18h14
  4. Fuite de mémoire en utilisant le template list
    Par schtroumpf_farceur dans le forum Langage
    Réponses: 9
    Dernier message: 18/07/2005, 20h44
  5. [java 1.5] utilisation avec eclipse??
    Par champion dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 12/02/2005, 17h53

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