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 Java Discussion :

Probleme utilisation memoire


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Par défaut Probleme utilisation memoire
    N'ayant aucune connaissance ou presque concernant la facon avec laquelle un programme java est interprété je m'adresse à vous concernant un probleme de memoire.

    Je fais une acquisition continue d'un signal et lorsque l'acquisition est lancée l'utilisation memoire de mon processus java ne fait qu'augmenter et ne revient jamais à l'etat initial meme une fois l'acquisition stoppée.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class AcquisitionContinueTimed extends Timer{
     
    	UI refUI;
    	AcquisitionContinue taskAcq;
     
     
    	public AcquisitionContinueTimed(UI refUI){
    		this.refUI = refUI;
    		taskAcq = new AcquisitionContinue();
    	}
     
     
    	public void run(){
     
    		refUI.data = taskAcq.ReadAcqCont(refUI.taskHandle, refUI.data, refUI.nsample);
     
    		refUI.TabbedPanel.getSelectedComponent().repaint(); 
    	}
    }
    La methode run() est appelée par le timer toutes les 100ms.

    Je pense avoir isolé le probleme, il s'agirait de la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    refUI.data = taskAcq.ReadAcqCont(refUI.taskHandle, refUI.data, refUI.nsample);
    car quand je mets cette ligne en commentaire l'utilisation memoire n'augmente plus.

    data dans ma classe UI etant un double[]

    La fonction ReadAcqCont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    JNIEXPORT jdoubleArray JNICALL Java_AcquisitionContinue_ReadAcqCont
    (JNIEnv *env, jobject jobj, jint taskHandle, jdoubleArray datarray, jint jbuffersize){
     
    	int32       read=0;
    	int i;
    	float64 *datab = (*env)->GetDoubleArrayElements(env, datarray, NULL); //buffer
    	float64 *data = (float64 *)malloc(jbuffersize*sizeof(float64));
    	DAQmxReadAnalogF64(taskHandle,-1,10.0,DAQmx_Val_GroupByScanNumber,data,jbuffersize,&read,NULL); // A CHANGER PEUT ETRE
    	datab[0] = read;
    	for(i=read+1; i<jbuffersize; i++){
    		datab[i-read] = datab[i];
     
    	}
    	for(i=0; i<read; i++){
    		datab[i-read+jbuffersize] = data[i];
    	}
    	(*env)->ReleaseDoubleArrayElements(env,datarray,datab,0);
    	return(datarray);
    }
    Merci d'avance si vous avez une idée.

  2. #2
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    Est ce que tu peux debogguer ta method "ReadAcqCont" aussi, JNI c est pas mon point fort mais je dirais qu il n y a pas de liberation de memoire lorsque tu termine ton acquisation, si tu peux faire une method pour AcquisitionContinue pour faire un clean a la fin de son execution?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut
    Bonjour,

    en effet il semble y avoir un problème de libération, tu fais une allocation dynamique ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float64 *data = (float64 *)malloc(jbuffersize*sizeof(float64));
    et aucune libération :

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Par défaut
    Citation Envoyé par Napalm51 Voir le message
    Bonjour,

    en effet il semble y avoir un problème de libération, tu fais une allocation dynamique ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float64 *data = (float64 *)malloc(jbuffersize*sizeof(float64));
    et aucune libération :
    Merci.

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

Discussions similaires

  1. probleme de mémoire?
    Par dams78 dans le forum GTK+ avec C & C++
    Réponses: 12
    Dernier message: 24/02/2006, 13h52
  2. utilisation memoire
    Par reptils dans le forum wxWidgets
    Réponses: 1
    Dernier message: 03/02/2006, 03h27
  3. [VC++6] probleme fuite memoire CLIST ?
    Par athilla dans le forum MFC
    Réponses: 16
    Dernier message: 22/11/2005, 16h01
  4. [langage] Problème de mémoire
    Par And_the_problem_is dans le forum Langage
    Réponses: 6
    Dernier message: 22/07/2003, 16h17
  5. [swing] probleme de memoire
    Par leBigouden dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/05/2003, 14h19

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