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

Multimédia Java Discussion :

[Audio] Fuite de mémoire, lecture audio .wav


Sujet :

Multimédia Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Par défaut [Audio] Fuite de mémoire, lecture audio .wav
    Bonjour,

    Je suis entrain de faire un petit lecteur audio wav. (Faut bien commencer quelque part)
    Mais j'ai une fuite de mémoire à cette endroit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int length = (int) (stream.getFrameLength() * format.getFrameSize());
    samples = new byte[length];
    Mais "stream.getFrameLength() * format.getFrameSize()" ne fait que 9MO avec la chanson utlisée :/

    L'erreur est : "Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space"

    Voici le code complet qui vous intéresse :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    public SoundJava(String filePath) {
    		try {
                File file = new File(formatString(filePath));
    			AudioInputStream stream = AudioSystem.getAudioInputStream(file);
    			format = stream.getFormat();
    			samples = getSamples(stream);
    		} catch (Exception e) {
    		}
    	}
     
    	public byte[] getSamples() {
    		return samples;
    	}
     
    	public byte[] getSamples(AudioInputStream stream) {
    		int length = (int) (stream.getFrameLength() * format.getFrameSize());
            System.out.println( (stream.getFrameLength() * format.getFrameSize())/8 /1000000 );
    		samples = new byte[length];
    		DataInputStream in = new DataInputStream(stream);
    		try {
    			in.readFully(samples);
    		} catch (Exception e) {
    		}
    		return samples;
    	}
     
    	public void play(InputStream source2) {
            source = source2;
    		int bufferSize = format.getFrameSize() * Math.round(format.getSampleRate() / 10);
    		buffer = new byte[bufferSize];
    		try {
    			DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
    			line = (SourceDataLine) AudioSystem.getLine(info);
    			line.open(format, bufferSize);
    		} catch (LineUnavailableException e) {
    			e.printStackTrace();
    			return;
    		}
        }
     
        private void go(){
    		line.start();
    		try {
    			numBytesRead = 0;
    			while (numBytesRead != -1) {
                    if(sleep == false){
     
                        numBytesRead = source.read(buffer, 0, buffer.length);
                        if (numBytesRead != -1)
                            line.write(buffer, 0, numBytesRead);
                    }else{}
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		line.drain();
    		line.close();
        }
    Pourquoi est-ce qu'il y a une fuite ?
    Surtout que si je change la longueur, la chanson marche (enfin jusqu'à un certain moment).

    Cordialement,

    rXp<!>

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 911
    Billets dans le blog
    54
    Par défaut
    Astuce (qui ne regle pas forcement ton probleme) : il faut penser a fermer tes flux quand tu as fini de les utiliser (par exemple dans un bloc finally {} comme ca ils sont fermes meme en cas d'exception) !
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre expérimenté Avatar de sewatech
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Essaie d'augmenter ta mémoire au lancement, pour vérifier jusqu'où peut aller ta fuite.

    Option -Xmx256m, par exemple.

    Alexis

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Par défaut
    J'ai essayé, mais mon programme à toujours la fuite même avec -Xmx512m et même 1024 :/
    Je ne comprend pas pourquoi.

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

Discussions similaires

  1. Problèmes de lectures audio/vidéo
    Par Z20500 dans le forum Vidéo
    Réponses: 1
    Dernier message: 11/08/2008, 11h11
  2. Pilote pour lecture audio
    Par Masterglob dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 29/05/2008, 12h19
  3. [Libraire] Son , lecture audio.
    Par RideKick dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/07/2007, 13h51
  4. lecture audio auto une fois
    Par vincz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/05/2007, 08h06
  5. [JavaSound] Problème de lecture audio
    Par jbond008 dans le forum Multimédia
    Réponses: 2
    Dernier message: 09/05/2007, 10h56

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